数字生成器性能linux vs windows



我使用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上运行,或者在一个直终端上运行。笔直的终端会更快。

最新更新