此问题已在此处有答案:
What do 'real', 'user' and 'sys' mean in the output of time(1)?(8个回答)
7年前关闭。
$ 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;
}
1条答案
按热度按时间7eumitmz1#
如果你看一下manpage(
man time
),它说:time命令使用给定的参数运行指定的程序命令。当命令完成时,time向标准输出写入一条消息,给出有关此程序运行的定时统计信息。这些统计信息包括(i)调用和终止之间经过的真实的时间,(ii)用户CPU时间(times(2)返回的结构tms中tms_utime和tms_cutime值的总和),以及(iii)系统CPU时间(times(2)返回的结构tms中tms_stime和tms_cstime值的总和)。
基本上,
user
时间是程序在CPU上运行的时间,sys
时间是程序等待操作系统执行任务的时间。如果你对基准测试感兴趣,user + sys
是一个很好的指标。real
可能会受到其他正在运行的进程的影响,并且不太一致。