system_clock 返回负时间 c++

system_clock returning negative time c++

我正在编写代码来为 for 循环计时,我使用了教授给我的代码,它使用了 system_clock。 我的问题是,在我计时的一个 for 循环中,它返回负时间。有时它是不同的数字,但总是负数。

代码如下:

std::chrono::time_point<std::chrono::system_clock> start2, end2;
int sum2 = 0;
std::cout << "Sum on reference ";
start2 = std::chrono::system_clock::now();
for(int i = 0; i < 10000; i++)
{
    sum2 = secondSum(dr);
}
end2 - std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds2 = end2 - start2;
std::cout << "sum: " << sum2 << std::endl;
std::cout << "Elapsed time for data processing on reference: " << elapsed_seconds2.count() << "s\n";

其中 dr 是对内部填充数组的结构的引用,而 secondSum 是对该数组内的不同值求和的函数。

您需要将行 end2 - std::chrono::system_clock::now(); 更改为 end2 = std::chrono::system_clock::now();。之后您的代码应该完全按照您的预期工作。