提问者:小点点

C++中带线程的时钟函数


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

“只有通过对std::clock的不同调用返回的两个值之间的差异才有意义,因为std::clock纪元的开始并不一定要与程序的开始重合。std::clock时间可能比wall clock前进得更快或更慢,这取决于操作系统给程序的执行资源。例如,如果CPU由其他进程共享,则std::clock时间可能比wall clock前进得更慢。另一方面,如果当前进程是多线程的,并且有多个执行核心可用,则std::clock时间可能比wall clock前进得更快。”

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


共1个答案

匿名用户

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

正如文档中给出的示例--它显示了创建的两个线程,报告的值几乎是报告的wallclock时间的两倍。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|中|线程|时钟|函数)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?