Linux时间命令输出中real,user和sys的含义

$ time ./Test real 0m2.906s user 0m2.887s sys 0m0.017s 

这里是程序代码:

 #include <iostream> #include <map> void func_a() { std::map<int, int> m; for (unsigned int i = 0; i < 10000; i++) { m.insert(std::pair<int, int>(i, i)); } } void func_b() { std::map<int, int> m; for (unsigned int i = 0; i < 1000000; i++) { m.insert(std::pair<int, int>(i, i)); } } int main() { func_a(); func_b(); return 0; } 

Solutions Collecting From Web of "Linux时间命令输出中real,user和sys的含义"

如果你看看联机 man timeman time ),它说:

time命令使用给定的参数运行指定的程序命令。 当命令结束时,时间将消息写入标准输出,给出有关此程序运行的时序统计信息。 这些统计数据由(i)调用和终止之间的实际实时时间,(ii)用户CPU时间(时间(2)返回的struct tms中的tms_utime和tms_cutime值的总和),以及(iii)系统CPU时间(由times(2)返回的struct tms中的tms_stime和tms_cstime值之和)。

基本上, user时间是你的程序在CPU上运行了多长时间, sys时间是你的程序等待操作系统执行任务的时间。 如果您对基准测试感兴趣,那么user + sys是适合使用的好时机。 real可能会受到其他正在运行的进程的影响,而且更加不一致。