用C+度量函数的执行时间

用C+度量函数的执行时间

我想知道某个函数在我的C+程序中执行所需的时间。linux..之后,我想做一个速度比较。我看到了几个时间函数,但最后得到的是Boost。编年史:

process_user_cpu_clock, captures user-CPU time spent by the current process

现在,我不清楚我是否使用了上述功能,我会得到CPU在这个功能上花费的唯一时间吗?

其次,我找不到任何使用上述功能的例子。有谁能帮我使用上面的功能吗?

P.S:现在,我在用std::chrono::system_clock::now()获得时间的秒,但这给我不同的结果,因为不同的CPU负载,每次。


繁星coding
浏览 362回答 3
3回答

青春有我

在C+11中,这是一种非常容易使用的方法。std::chrono::high_resolution_clock从…<chrono>头球。用它就像这样:#include&nbsp;<iostream>#include&nbsp;<chrono>using&nbsp;namespace&nbsp;std;using&nbsp;namespace&nbsp;std::chrono;void&nbsp;function(){ &nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;number&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;long&nbsp;long&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;!=&nbsp;2000000;&nbsp;++i&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;+=&nbsp;5; &nbsp;&nbsp;&nbsp;&nbsp;}}int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;high_resolution_clock::time_point&nbsp;t1&nbsp;=&nbsp;high_resolution_clock::now(); &nbsp;&nbsp;&nbsp;&nbsp;function(); &nbsp;&nbsp;&nbsp;&nbsp;high_resolution_clock::time_point&nbsp;t2&nbsp;=&nbsp;high_resolution_clock::now(); &nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;duration&nbsp;=&nbsp;duration_cast<microseconds>(&nbsp;t2&nbsp;-&nbsp;t1&nbsp;).count(); &nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;duration; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}这将衡量功能的持续时间。注:不一定要获得相同的输出,因为计算机上运行的其他进程可以少或更多地使用计算机的CPU。就像你会解决一个数学练习,你的头脑可以或多或少地集中,所以你会在不同的时间解决这个问题。在人类的头脑中,我们可以记住一个数学问题的解决方案,尽管对于一台计算机来说,同样的过程总是新的,所以,正如我所说的,它不需要总是得到相同的结果!

大话西游666

简单的程序来查找函数执行所需的时间。#include&nbsp;<iostream>#include&nbsp;<ctime>&nbsp;//&nbsp;time_t#include&nbsp;<cstdio>void&nbsp;function(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(long&nbsp;int&nbsp;i=0;i<1000000000;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;nothing &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}int&nbsp;main(){time_t&nbsp;begin,end;&nbsp;//&nbsp;time_t&nbsp;is&nbsp;a&nbsp;datatype&nbsp;to&nbsp;store&nbsp;time&nbsp;values.time&nbsp;(&begin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;note&nbsp;time&nbsp;before&nbsp;executionfunction();time&nbsp;(&end); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;note&nbsp;time&nbsp;after&nbsp;executiondouble&nbsp;difference&nbsp;=&nbsp;difftime&nbsp;(end,begin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;("time&nbsp;taken&nbsp;for&nbsp;function()&nbsp;%.2lf&nbsp;seconds.\n",&nbsp;difference&nbsp;);return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP