time vs gettimeofday c ++



time命令返回执行命令所花费的时间。

如果我在命令调用的开始处(使用system())放一个"gettimeofday()",在调用的结束处放一个"gettimeofday()",并取一个不同的值,结果就不一样了。(差别也不小)

有谁能解释一下这两种用法的确切区别是什么,哪一种是计算调用执行时间的最佳方法?

谢谢。

Unix time命令测量整个程序的执行时间,包括系统加载二进制文件及其所有库所花费的时间,以及程序完成后清理所有内容所花费的时间。

另一方面,gettimeofday只能在程序内部工作,也就是说,在它完成加载之后(对于初始测量),在它被清理之前(对于最终测量)。

哪个是最好的?这取决于你想测量什么…div;)

这完全取决于你选择的时机。如果你想用来计时,那么time()可能是你最好的选择。如果您需要比这更高的分辨率,那么我会考虑gettimeofday(),它提供了微秒分辨率(1/1000000秒)。

如果您需要更高的分辨率,请考虑使用clock()CLOCKS_PER_SECOND,只需注意clock()很少准确描述所花费的时间量,而是使用的CPU周期数。

time()秒为单位返回自epoch以来的时间

gettimeofday():返回:

struct timeval {
       time_t      tv_sec;     /* seconds */
       suseconds_t tv_usec;    /* microseconds */
};

每个时间函数精度不同。在c++ 11中,可以使用std::chrono:

using namespace std::chrono;
auto start = high_resolution_clock::now();
/* do stuff*/
auto end = high_resolution_clock::now();
float elapsedSeconds = duration_cast<duration<float>>(end-start).count();

相关内容

  • 没有找到相关文章

最新更新