c ++代码执行定时器返回0,需要以毫秒为单位输出

时间:2016-08-08 21:37:29

标签: c++ time execution

我正在试图弄清楚如何计算部分程序的执行时间,但是当我使用下面的代码时,我得到的所有内容都是0.我知道这不可能是正确的。代码我正在递归地实现大量int的mergesort。如何以毫秒为单位获得执行程序所需的时间?

//opening input file and storing contents into array
index = inputFileFunction(inputArray);

clock_t time = clock();//start the clock

//this is what needs to be timed
newRecursive.mergeSort(inputArray, 0, index - 1);

//getting the difference        
time = clock() - time;

double ms = double(time) / CLOCKS_PER_SEC * 1000;

std::cout << "\nTime took to execute: " << std::setprecision(9) << ms << std::endl;

2 个答案:

答案 0 :(得分:6)

您可以在C ++ 11中使用chrono库。以下是修改代码的方法:

#include <chrono>
//...
auto start = std::chrono::steady_clock::now();
// do whatever you're timing
auto end = std::chrono::steady_clock::now();
auto durationMS = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
std::cout << "\n Time took " << durationMS.count() << " ms" << std::endl;

答案 1 :(得分:0)

如果您正在使用OSX进行开发,Apple的这个blog post可能会有用。它包含的代码片段可以为您提供所需的时序分辨率。