通常在 IDE 中,当您运行程序时,IDE 会告诉您运行程序所花费的总时间。在 Unix/Linux 中使用终端编译和运行时,有没有办法获得运行程序所需的总时间?
我知道 ctime 允许获取自 1970 年以来的总时间,但是我想获取程序运行所需的时间。
您可以随时间启动程序:
[:~/tmp] $ time sleep 1
real 0m1.007s
user 0m0.001s
sys 0m0.003s
你在正确的轨道上!您可以获取当前时间并将其从程序的结束时间中减去。下面的代码说明:
time_t begin = time(0); // get current time
// Do Stuff //
time_t end = time(0); // get current time
// Show number of seconds that have passed since program began //
std::cout << end - begin << std::endl;
注意:时间粒度只有一秒。如果您需要更高的粒度,我建议研究精密计时器,例如windows 上的QueryPerformanceCounter()或 linux 上的clock_gettime()。在这两种情况下,代码的工作方式可能非常相似。
作为mdsl答案的附录,如果您想在程序本身中获得接近该测量值的东西,您可以在程序开始时获取时间并在程序结束时获取时间(正如您所说,及时自 1970 年以来)- 然后从结束时间中减去开始时间。