与线程C++的时钟功能

clock function in C++ with threads

本文关键字:时钟 功能 C++ 线程      更新时间:2023-10-16

这里有一个非常有趣的注释:http://en.cppreference.com/w/cpp/chrono/c/clock

"只有不同调用 std::clock 返回的两个值之间的差异才有意义,因为 std::clock 时代的开始不必与程序的开始相吻合。std::时钟时间可能比挂钟更快或更慢,具体取决于操作系统提供给程序的执行资源。例如,如果 CPU 由其他进程共享,则 std::clock 时间可能比挂钟慢。另一方面,如果当前进程是多线程的,并且有多个执行内核可用,则 std::clock 时间可能会比挂钟更快。

为什么时钟会随着多线程而加速?我正在检查有线程与没有线程的 C++ 程序的性能,我注意到线程的时间相似(不是更好),但感觉更快(比如在 8 秒的运行时说 3 秒)。

如果有多个内核可用,并且您正在运行多个线程,则可能有多个线程在不同的内核上同时执行。由于clock()测量处理器时间,因此它可能会比挂钟时间前进得更快,因为多个线程同时推进它。

就像文档中给出的示例一样 - 它显示了创建的两个线程,报告的clock()值几乎是报告的挂钟时间的两倍。