0

我正在尝试测量从我的 C++ 代码与系统(在 Linux 中)调用的外部软件的 cpu 时间。我想知道“getusage用户和系统时间”是否可以与“时间命令给出的用户和系统时间”进行比较。

例如,这两段代码返回的时间是否(大约)相同,也就是说,我会做一个公平的比较吗?:

//代码 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.89user 2.13system 0:05.11elapsed 137%CPU (0avgtext+0avgdata 23968maxresident)k 0inputs+86784outputs (0major+2386minor)pagefaults 0swaps

我应该担心 137% 的 CPU 吗?

4

1 回答 1

0

因此,137% 是基于 7.02 秒(总“用户 + 系统”)是运行代码实际时间 5.11 秒的 137%。所以,如果你只有一个处理器(核心),总时间至少要 7.02 秒。

由于我们看不到您的实际代码,因此很难说这是否是由于您的代码是多线程的,或者时间花在了内核中,可以说是“在幕后”在多个线程中运行事物。

于 2013-09-12T09:48:29.610 回答