我看了http://linux.die.net/man/3/clock_gettime和http://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime/comment-page-1/#comment-681578
据说用这个来
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &stop_time);
衡量一个函数运行所需的时间。
我在我的程序中试过了。当我运行它时,它返回说它需要15秒。但是,当我使用秒表来衡量它时,它是30秒。
你能否告诉我为什么clock_gettime会返回实际时间的1/2?
谢谢。
答案 0 :(得分:2)
在多进程环境中,进程不断从CPU迁移到“运行队列”。
在对应用程序进行性能测试时,通常很容易知道进程在CPU上运行的时间,同时排除进程在“运行队列”上等待CPU资源的时间。
对于这个问题,CPU时间大约是实时的一半,其他进程很可能在您的进程也在运行时主动竞争CPU时间。看起来您的流程在运行期间获得了大约一半的CPU资源是相当成功的。
您可以考虑使用CLOCK_REALTIME而不是使用CLOCK_PROCESS_CPUTIME_ID吗?
有关其他详细信息,请参阅:Understanding the different clocks of clock_gettime()