单线程就比多线程性能差吗?不一定
我自己做了一个小测试,发现了一个有趣的数据,先将结论写下来:
- 单线程的性能,可能超过100核(甚至近万核)的且没有使用lock的多线程的性能
- 就算多线程采用无锁并发数据结构,它也可能远远低于单线程的执行速度
再看测试代码
单线程,先加mutex锁,然后执行一个长时间计算(完整源代码链接如此)
std::lock_guard<std::mutex> lock(g_mutex);
int sum = ;
for (int i = ; i < times; ++i) {
++sum;
}
相关文章