我正在使用类似以下的方式来计算程序从开始到结束所需的时间:
int main(){
clock_t startClock = clock();
.... // many codes
clock_t endClock = clock();
printf("%ld", (endClock - startClock) / CLOCKS_PER_SEC);
}
我的问题是,由于同时有多个进程运行,如果我的进程在空闲状态下运行x时间,那么在这段时间内时钟会在我的程序中继续滴答吗?
所以,我的担忧是,假设已经过去了1000个时钟周期,但我的进程只使用了其中的500个,那么我从(endClock - startClock)
中会得到500还是1000?
谢谢。
clock()
将为您提供CPU时间。如果您的应用程序仅为单线程,则这是衡量性能的好方法(前提是您没有其他进程通过缓存或超线程干扰...)。但是,如果它是多线程的,则使用挂钟将提供更有意义的性能结果。 - MysticialstartClock=clock()
,并在join之后执行endClock=clock()
吗?如果是多线程代码,为什么墙钟会给出更有意义的性能呢?谢谢。 - Derek Ligettimeofday()
。请参见我发布的答案。 - Mysticial