与 Windows 平台相比,Linux 中的 CPU 需要花费太多时间来执行嵌套 for 循环

标签 c linux windows

我将在我的 Linux 平台上运行一个嵌套 for 循环,这大约需要 55 毫秒,而相同的程序可以在 Windows 上运行,大约需要 25 毫秒。

Linux 和 Windows 平台中的 CPU 配置与 CPU 时钟和 RAM 几乎相同。

我还附上了这个问题的代码。

那么,有谁知道这里发生了什么,或者如何优化我将在这台 Linux PC 上运行的嵌套 for 循环?

for (i = 0; i < 1944; i += 2)
        for (j = 0; j < 2592; j += 2)
          {
             Here some arithmetic operation is going on
          }

最佳答案

在这种情况下,Linux 与 Windows 几乎肯定是无关紧要的。你是吗

  • 在两个平台上使用相同的编译器?
  • 在两个平台上使用相同版本的编译器?
  • 在两个平台上使用相同的优化设置?

所有这些都会导致结果不同。此外,甚至没有指定 CPU 是否相同。对我的音频采样率转换库进行基准测试后,我发现 1.7 GHz Core i5 和 1.6 GHz Atom 之间的吞吐量存在 6-7 倍的差异。

  • 您是否在两个基准测试中使用相同的硬件

还有许多其他因素会混淆基准,

  • 您是否在后台运行其他进程?
  • 您是否使用相同的技术来衡量这两种情况下的性能?
  • 您是否收集了足够的样本(并且您是否进行了数学计算来证明这一点)?

关于与 Windows 平台相比,Linux 中的 CPU 需要花费太多时间来执行嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18371826/

相关文章:

c - ANSI C 兼容事件循环

linux - 无法使用 OpenSSL 1.0.2k 构建 APR-util 1.5.4

java - 如何使用java在Linux服务器上创建文件

php - 网站宕机,无法理解网络服务器进程日志?

windows - 使用很多特殊参数在 .bat 中执行多个命令

windows - 转义 Windows 批处理文件中的符号

c - 错误: ordered comparison between pointer and integer ('int' and 'int **' )

c - 如何在C中打印方阵的所有方子矩阵?

java - 更改 Java 安全级别

c - 图中的深度优先搜索