我使用代码块在Windows 7 64位上使用mingw32 4.4.1编译了此代码。 对于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之间特别解释这个巨大的时间差异?
除了您的解释外,请提供我可以研究和阅读的关键词和主题名称,以便更好地深入了解原因。
答案 0 :(得分:0)
我认为这是Windows控制台的神器(速度很慢)。尝试使用
运行Windows代码program > data.txt
并检查那里。也是在X上或直接终端上运行的linux代码。一个直的终端会更快。
答案 1 :(得分:0)
cout与操作系统无关。
尝试写入内存然后转储结果,然后安慰。它应该更准确。
Windows上的stdout导致更频繁地刷新linux上的那些(缓存然后刷新)。