C++ getrusage不适合我吗?为什么?
我正在尝试测量最大驻留集大小,我发现您可以使用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
#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,但输出的增加对我来说没有任何意义:/谢谢你的评论。