这里有一个非常有趣的注释:http://en.cppreference.com/w/cpp/chrono/c/clock
“只有不同调用std :: clock返回的两个值之间的差异才有意义,因为std :: clock时代的开头不一定与程序的开头一致.std :: clock time may may比挂钟更快或更慢,取决于操作系统给程序执行的资源。例如,如果CPU被其他进程共享,std :: clock时间可能比挂钟慢。 另一方面,如果当前进程是多线程的并且有多个执行核心可用,则std :: clock时间可能比挂钟更快。 “
为什么多线程时钟会加速?我正在检查带有线程的C ++程序的性能,没有它,我注意到线程的时间相似(不是更好)但是感觉更快(比如在3秒内说8秒)运行时)。
答案 0 :(得分:3)
如果有多个核心可用,并且您正在运行多个线程,则可能在不同核心上同时执行多个线程。由于clock()
测量处理器时间,因此它可能比wallclock时间更快,因为多个线程同时推进它。
正如文档中给出的示例一样 - 它显示了两个创建的线程,报告的clock()
值几乎是报告的挂钟时间的两倍。