C++ getrusage不适合我吗?为什么?

C++ getrusage不适合我吗?为什么?,c++,linux,getrusage,C++,Linux,Getrusage,我正在尝试测量最大驻留集大小,我发现您可以使用getrusage进行测量: 当我运行这个 #include <iostream> #include<vector> #include <sys/resource.h> using namespace std; int main(int argc, char* argv[]){ int who = RUSAGE_SELF; struct rusage usage; int re

我正在尝试测量最大驻留集大小,我发现您可以使用getrusage进行测量:

当我运行这个

#include <iostream>
#include<vector>
#include <sys/resource.h>

using namespace std;

int main(int argc, char* argv[]){

    int who = RUSAGE_SELF;
    struct rusage usage;
    int ret = -1;

    vector<int> v(1024);

    ret = getrusage(who, &usage);
    if (ret == 0) cout << usage.ru_maxrss << endl;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
int who=RUSAGE_SELF;
结构图像使用;
int-ret=-1;
向量v(1024);
ret=获取图像(谁和使用情况);

如果(ret==0)cout我已经对代码做了一些修改,以便对rusage结构的ru_maxrss元素所显示的数据有意义

这是我的密码

#include <vector>
#include <sys/resource.h>

using namespace std;

int main(int argc, char* argv[]){

    int who = RUSAGE_SELF;
    struct rusage usage;
    int ret = -1;
    long int a,b;

getrusage(who, &usage);
a=usage.ru_maxrss;

cout << "Maximum resident set size before vector allocation   "<<a << endl;
    vector<int> v(10240000);

cout<<"Size of vector v in kilobytes (kB)  "<<(v.size()*sizeof(int))/(1024)<<endl;

    ret = getrusage(who, &usage);

    cout<<"Size of integer data type   "<<sizeof(int)<<endl;
    b=usage.ru_maxrss;

    if (ret == 0) 
cout << "Maximum resident set size after vector allocation  "<<b << endl;
 cout<<"Difference between resident set size before and after vector allocation  "<<b-a<<endl;

    return 0;
}

#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
int who=RUSAGE_SELF;
结构图像使用;
int-ret=-1;
长int a,b;
getrusage(谁和使用情况);
a=usage.ru_maxrss;

你的编译器可能会因为向量没有被使用而优化它吗?试着迭代向量并将值推到v中。我知道这可以让你得到某一点的资源使用率,所以理论上我可以在那之后使用向量,这应该考虑向量。但是,是的,我尝试在vector。感谢您的评论。您是否尝试过将1024修改为更大的值(例如100000)?可能1024不足以引起内存增加。为什么不够?理论上是KB数,所以1024个整数的向量应该增加4KB。无论如何,我尝试了1024000,但输出的增加对我来说没有任何意义:/谢谢你的评论。