我使用mingw32 4.4.1在windows 7 64位上使用代码块编译了这段代码。对于Debian,我使用g++ 4.9.2。
#include <iostream>
#include <time.h>
#include <math.h>
#include <cstdlib>
using namespace std;
int main()
{
clock_t t1,t2;
t1=clock();
for (int i=0; i<=50000; i++)
{
cout << i << " ";
}
t2=clock();
float diff (((float)t2-(float)t1) / CLOCKS_PER_SEC);
cout<<"it took: "<<diff<<endl;
system ("pause");
return 0;
}
Windows XP 32位虚拟机:3次,平均生成时间为7.656秒
Windows 10 32位虚拟机:3次,平均生成时间为16.446秒
Debian 8.2 32位虚拟机:3次,平均生成时间为0.0118秒
如何解释linux和windows在时间上的巨大差异呢?
请提供关键词和主题名称,我可以研究和阅读,以便更好地深入了解背后的原因,除了你的解释。
cout不是OS独立的
尝试写入内存,然后转储结果,然后测量。它应该更准确。
Windows上的stdout比Linux上的stdout更频繁地导致刷新(先缓存后刷新)。
我认为这是windows控制台的产物(它很慢)。试着用
运行windows代码program > data.txt
并在那里检查。linux代码也在X上运行,或者在一个直终端上运行。笔直的终端会更快。