我读了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 吗?
谢谢。
最佳答案
在多进程环境中,进程不断从 CPU 迁移到“运行队列”。
在对应用程序进行性能测试时,了解进程在 CPU 上运行的时间通常很方便,同时排除进程在“运行队列”上等待 CPU 资源的时间。
在这个问题的情况下,CPU 时间大约是实时时间的一半,很可能其他进程正在积极竞争 CPU 时间,而您的进程也在运行。看来您的进程在其运行期间相当成功地获取了大约一半的 CPU 资源。
您可以考虑使用 CLOCK_REALTIME,而不是使用 CLOCK_PROCESS_CPUTIME_ID?
有关更多详细信息,请参阅:Understanding the different clocks of clock_gettime()
关于c - 在 clock_gettime 中使用 CLOCK_PROCESS_CPUTIME_ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483261/