c - Ubuntu 中计算工作负载的性能令人失望

标签 c macos ubuntu exp

我发现在用于科学计算的全新 headless 工作站机器上,在 Ubuntu 下运行一些计算代码时性能相当差。我注意到在 Ubuntu 和我用于开发的旧 Mac 笔记本电脑上运行一些稍微复杂的代码的速度有所不同。然而,我已经设法将它提炼成一个非常简单的例子,它仍然比我的旧机器表现出更少的改进:

#include <stdio.h>
#include <math.h>

int main() {
        double res = 0.0;
        for(int i=1; i<200000000; i++) {
                res += exp((double) 100.0/i);
        }
        printf("%lf", res);
        return(0);
}

现在的 Mac 是将近 5 年的 2.4GHz Core 2 Duo MacBook Pro,运行 OS X 10.5,运行这段代码大约需要 6.8 秒。然而,在运行 Ubuntu 11.10 的全新 3.4GHz Core i7 Dell 上,大约需要 6.1 秒!有人能告诉我这是怎么回事吗,因为一台用了将近 5 年的笔记本电脑与全新台式机工作站的差距在 10% 以内是荒谬的?更荒谬的是,我可以通过监控工具看到 Core i7 睿频加速到接近 4GHz!

Mac 编译:

gcc -o test test.c -std=gnu99 -arch x86_64 -O2

Ubuntu 编译:

gcc -o test test.c -std=gnu99 -m64 -O2 -lm

谢谢,

路易斯

最佳答案

it is absurd that a nearly 5 year old laptop is within 10% of a brand new desktop workstation

请记住,您正在对一个特定函数 (exp) 进行基准测试。我们真的不知道您要进行基准测试的 exp() 函数的两个实现是否相同(可以想象一个比另一个优化得更好)。

如果您要对不同的函数进行基准测试,结果可能会大不相同(可能更符合您的期望;也可能不符合)。

如果 exp() 确实是您实际应用程序的瓶颈,一种可能是考虑使用快速近似。这是一篇提供此类近似值的论文:A Fast, Compact Approximation of the Exponential Function .

关于c - Ubuntu 中计算工作负载的性能令人失望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417605/

相关文章:

android - ADT 仍然不允许创建 Activity

linux - docker运行命令错误

bash - 如何在 Bash 中构建循环

c - C中的段错误,无法找出原因

c++ - Mac + xcode 6.4 - header 包含路径

创建有问题的二维数组 (C)

macos - 为什么我的 Applescript 将背景图像添加到 .dmg 文件夹会导致大小错误?

c - 打印无符号数组并退出循环

django - 通过 NFS 上传文件时出现 OSerror

spring-mvc - Spring MVC 资源映射标记在服务器主机上不起作用