我有下一个简单的功能,以便按进程测量计算时间:
double get_cpu_time()
{
//LINUX
const static int64_t NANOS_PER_SEC = 1000000000L;
struct timespec time;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time);
return (((int64_t) time.tv_sec) * NANOS_PER_SEC) + ((int64_t) time.tv_nsec);
}
ini_time = get_cepu_time();
//intesive computation code
end_time = get_cepu_time();
end_time = end_time - ini_time
;
该函数返回每个过程的计算时间,在一个简单的等式中可以如下:
Tcomp = Tcpu + Taccmen => inst * ILP + #miss cache * 延迟时间
有趣的是只获取 Tcpu 时间(执行指令的时间,不考虑查找数据的时间),你知道任何函数来获取这个时间,或者返回内存访问时间的函数,那么我可以 sustract(tcomp - 塔克梅姆)
此致,
仁