单线程就比多线程性能差吗?不一定

先看结论

我自己做了一个小测试,发现了一个有趣的数据,先将结论写下来:

  1. 单线程的性能,可能超过100核(甚至近万核)的且没有使用lock的多线程的性能
  2. 就算多线程采用无锁并发数据结构,它也可能远远低于单线程的执行速度

再看测试代码

单线程,先加mutex锁,然后执行一个长时间计算(完整源代码链接如此)

  std::lock_guard<std::mutex> lock(g_mutex);

  int sum = ;
  for (int i = ; i < times; ++i) {
    ++sum;
  }

相关文章