我正在尝试使用 system (在Linux中)从我的C ++代码调用外部软件的cpu时间。我想知道“getusage用户和系统时间”是否可以与“time命令给出的用户和系统时间”进行比较。
示例,这两段代码返回的时间是否(大致)相同,即我会做一个公平的比较吗?:
//代码1(GETUSAGE)
long int timeUsage1,timeUsage2 = 0;
struct rusage usage;
getrusage(RUSAGE_SELF, &usage);
timeUsage1 = usage.ru_utime.tv_sec+usage.ru_stime.tv_sec;
//C++ code
getrusage(RUSAGE_SELF, &usage);
timeUsage2 = ((usage.ru_utime.tv_sec+usage.ru_stime.tv_sec)-timeUsage1);
//代码2(来自我的C ++代码的TIME LINUX命令)
system(time external) //where external is equivalent to C++ code above
谢谢, 安娜
PS:使用来自CODE 2的时间命令,我得到这样的结果:
4.89用户2.13系统0:05.11累计137%CPU(0avgtext + 0avgdata 23968maxresident)k 0inputs + 86784outputs(0major + 2386minor)pagefaults 0swaps
我应该关注137%的CPU吗?
答案 0 :(得分:0)
因此,137%是基于7.02s(总“用户+系统”)的事实,是运行代码所花费的实际时间的5.1%,5.11s。因此,如果您只有一个处理器(核心),则总时间至少为7.02秒。
由于我们没有看到您的实际代码,因此很难说这是由于您的代码是多线程的,还是在内核中花费的时间在“幕后”的多个线程中运行,可以这么说。