时间vs gettimeofday c ++

时间:2013-03-01 13:24:45

标签: c++ time gettimeofday

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

如果我在命令调用开始时使用“gettimeofday()”(使用system()),并且在调用结束时添加一个“gettimeofday()”并且有所不同,那么它就不会出现相同的情况。 (这也不是一个很小的区别)

有人可以解释这两种用法之间的确切区别是什么,这是为执行呼叫计时的最佳方式?

感谢。

4 个答案:

答案 0 :(得分:6)

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

另一方面,gettimeofday只能在程序内部工作,即在完成加载(用于初始测量)之后,以及在清理之前(用于最终测量)。

哪一个最好?取决于你想要衡量的东西......;)

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

time()中返回自纪元以来的时间。

gettimeofday():返回:

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

答案 3 :(得分:0)

每次功能都有不同的精度。在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();