Ubuntu的计算工作量令人失望

L A*_*ett 6 c macos ubuntu exp

我发现在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);
}
Run Code Online (Sandbox Code Playgroud)

现在,Mac是运行OS X 10.5的近5年的2.4GHz Core 2 Duo MacBook Pro,它运行此代码大约6.8秒.然而,在运行Ubuntu 11.10的全新3.4GHz Core i7戴尔上大约需要6.1秒!有人可以告诉我这里发生了什么,因为一台近5年的笔记本电脑在全新桌面工作站的10%以内是荒谬的吗?这更加荒谬,因为我可以通过监控工具看到Core i7涡轮增压到接近4GHz!

Mac编译:

gcc -o test test.c -std=gnu99 -arch x86_64 -O2
Run Code Online (Sandbox Code Playgroud)

Ubuntu编译:

gcc -o test test.c -std=gnu99 -m64 -O2 -lm
Run Code Online (Sandbox Code Playgroud)

谢谢,

路易

NPE*_*NPE 3

一台使用近 5 年的笔记本电脑与全新台式工作站的性能相差不到 10%,这很荒谬

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

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

如果exp()这确实是您实际应用程序的瓶颈,一种可能性是考虑使用快速近似。这里有一篇论文提供了一个这样的近似:指数函数的快速、紧凑的近似

  • @R..:有趣的是,在我作为库开发人员的职业生涯中,科学计算人群是要求偷工减料以提高性能的最严重的罪犯之一。作为一名前数学计算人员,我对此感到非常震惊。(注意,并不是说游戏开发人员更好)。 (2认同)