winsock2调用比Linux慢10

时间:2016-09-04 18:40:56

标签: performance ubuntu networking windows-7 winsock2

我的客户端/服务器程序在Win7上比在Ubuntu 16.04上运行慢得多。 在调查它的过程中,我将其缩小为两个winsock2调用循环的简单代码 - socket()&关闭套接字():

int counter = 0;
while (1)
{
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
        printf("socket() failed!\n");
        break;
    }
    closesocket(sock);  // close(sock); on Linux

    counter++;
    if (counter % 100000 == 0)
    {
        ...  // statistic calculation using GetSystemTimeAsFileTime() / clock_gettime() on Linux
    }
}

每100,000次迭代我打印“迭代次数/秒”统计数据。 在Win7上,我获得 ~64.000 次迭代/秒,在Ubuntu ~760.000 迭代/秒。

Win7 Professional,64位,i7-860 @ 2.8 GHz。 Ubuntu 16.04,64位,i7-2800 @ 3.4 GHz。

Win32和x64版本提供了相同的数字,调试版本和发布版本(针对速度进行了优化)版本在Win7和Linux之间存在x10差异。

iPerf(iPerf -N -4 -c 127.0.0.1 / iPerf -s)在Win7上显示 3.6 GBit / sec,在Ubuntu上显示 76 GBit / sec!< / p>

winock2表现如此糟糕的原因是什么? 我很乐意实时测试任何建议UTC +2:00:)

0 个答案:

没有答案