在基准测试中发现Windows与Linux锁定成本的巨大差异

时间:2014-03-26 18:16:51

标签: c++ linux windows multithreading locking

这是我用来测试Windows与Linux上的锁定获取的程序:

#include <mutex>
#include <time.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) 
{ 

    mutex m;

    clock_t tStart = clock();
    unsigned long long dd=0;

    for(int i = 0; i < 100000000;i++) 
    {
        unique_lock<mutex> lck {m}; // acquire the mutex m
        dd++;
    }

    cout << ((double)(clock() - tStart)/CLOCKS_PER_SEC) << endl;

    return dd;
}

我正在比较g ++与visual studio编译器。

以下是结果: 没有优化:

Windows: 37 seconds   
Linux: 3.3 seconds

通过优化(VS:发布,g ++: - O3)

Windows: 5.8 seconds
Linux:   0.07 seconds

我将Windows下运行的Ubuntu VM与Windows 7进行比较,我感到非常惊讶,差异是如此之大。

这是一个有效的比较,还是我错过了一些关键的东西?

0 个答案:

没有答案