c - 为什么 4 线程程序在 1 核 VM 上比在 4 核 VM 上运行得更快?

标签 c multithreading time parallel-processing pthreads

  • 我使用 4 核 i7 CPU(8 个逻辑核),debian linux
  • 虚拟机也是 debian linux
  • 程序使用 gcc 编译,没有进行特殊优化(默认编译设置)
  • 我循环了该程序 1000 次。当虚拟机具有 4 个核心时,所需时间会延长 2 倍以上。为什么?

注意:我运行的程序是一个 C 程序,生成 4 个线程(pthread),并在经过一点计算后加入它们。它执行并行性(而不是并发性)。

最佳答案

在 I7 中,所有核心共享 L3 缓存。如果额外的执行行导致 L3 缓存上出现更多缓存未命中,则可能会通过添加内核来降低速度。

关于c - 为什么 4 线程程序在 1 核 VM 上比在 4 核 VM 上运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54508431/

相关文章:

c - C语言中的线程定时器

.net - `finally` 代码块可能被跳过的原因是什么?

java - MySQL 检查日期为 0000-00-00 00 :00:00? 的情况

c++ - MS 特定的 volatile 是否会阻止硬件指令重新排序

c - 如何使用 read() 从标准输入获取未知长度的输入

c - 如何使用命令行中的 argv 参数(在 C 中)打开文件并循环遍历文件行?

c++ - 在 c/c++ 中创建时间戳的可移植方式

java - 如何在解析时存储日期和时间

validation - 如何验证 NTP 时间同步

c - 如何在 Windows 上设置 pthreads?