这是我用来测试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进行比较,我感到非常惊讶,差异是如此之大。
这是一个有效的比较,还是我错过了一些关键的东西?