【发布时间】:2011-11-20 14:33:06
【问题描述】:
我正在使用这样的东西来计算我的程序从开始到结束需要多长时间:
int main(){
clock_t startClock = clock();
.... // many codes
clock_t endClock = clock();
printf("%ld", (endClock - startClock) / CLOCKS_PER_SEC);
}
我的问题是,由于有多个进程同时运行,假设我的进程在 idle 的 x 时间段内,在这段时间内我的程序中的时钟会滴答作响吗?
所以基本上我担心的是,假设经过了 1000 个时钟周期,但我的进程只使用其中的 500 个,我会从 (endClock - startClock) 获得 500 个还是 1000 个?
谢谢。
【问题讨论】:
-
您是要测量 CPU 时间还是挂钟时间?
-
我想比较不同实现的性能,所以我认为CPU时间会更合适。有什么建议吗?
-
您使用的是 Linux 还是 Windows?还是别的什么?
-
由于您使用的是 Linux,
clock()将为您提供 CPU 时间。如果您的应用程序只是单线程的,这是衡量性能的好方法(前提是您没有其他可能通过缓存或超线程干扰的进程......)。但是,如果它是多线程的,则使用挂钟会产生更有意义的性能结果。 -
我实际上是在尝试比较不同实现之间的性能(使用 16/32/64/etc 线程)。我可以在创建线程之前做
startClock=clock(),在加入之后做endClock=clock()吗?如果挂钟是多线程代码,为什么它会提供更有意义的性能?谢谢。
标签: c performance time