【发布时间】:2019-03-12 11:39:36
【问题描述】:
对于给定的程序,与 linux 机器(gcc 4.8)相比,我在 Windows(VS 17)上得到不同的结果。
#include "CrossDevelopment.h"
using namespace std;
int main()
{
for (auto i = 0; i < 3; i++)
{
//chrono::high_resolution_clock::time_point start_time = chrono::high_resolution_clock::now();
chrono::system_clock::time_point start_time = chrono::system_clock::now();
for (auto i = 0; i < 50; i++) {
int a = 10;
int b = 5;
int c = a + b;
c += 10;
c *= a;
a *= b;
}
//chrono::high_resolution_clock::time_point end_time = chrono::high_resolution_clock::now();
chrono::system_clock::time_point end_time = chrono::system_clock::now();
auto elapsed_time = chrono::duration<double, micro>(end_time - start_time);
cout << "Difference of time " << elapsed_time.count() << " " << (end_time - start_time).count()
<< " " << (chrono::duration_cast<chrono::nanoseconds>(end_time - start_time)).count() << endl;
}
getchar();
return 0;
}
输出 在 Windows 机器上
时间差 1 10 1000
时间差 0.7 7 700
时间差 0.7 7 700
在 Linux 机器上
时间差 0.806 806 806
时间差 0.6 600 600
时间差 0.542 542 542
如果您看到最后一列,您会发现差异。这不是 high_resolution_clock 的情况。
【问题讨论】:
标签: c++11 visual-c++ cross-platform chrono