数字生成器性能linux vs windows

时间:2015-10-20 13:49:18

标签: c++ linux windows performance

我使用代码块在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之间特别解释这个巨大的时间差异?

除了您的解释外,请提供我可以研究和阅读的关键词和主题名称,以便更好地深入了解原因。

2 个答案:

答案 0 :(得分:0)

我认为这是Windows控制台的神器(速度很慢)。尝试使用

运行Windows代码
program > data.txt

并检查那里。也是在X上或直接终端上运行的linux代码。一个直的终端会更快。

答案 1 :(得分:0)

cout与操作系统无关。

尝试写入内存然后转储结果,然后安慰。它应该更准确。

Windows上的stdout导致更频繁地刷新linux上的那些(缓存然后刷新)。