【问题标题】:Interpreting the Dhrystone Benchmark results on Modern PC在现代 PC 上解释 Dhrystone 基准测试结果
【发布时间】:2015-01-21 17:09:19
【问题描述】:

首先,我将简要介绍一下我做了什么。

我从这里下载了 dhry.h dhry_1.c 和 dhry_2.c: http://giga.cps.unizar.es/~spd/src/other/dhry/

然后我根据这个做了一些更正(以便我编译):

https://github.com/maximeh/buildroot/blob/master/package/dhrystone/dhrystone-2-HZ.patch

还有这个

Errors while compiling dhrystone in unix

我已经使用以下命令行编译了文件:

gcc dhry_1.c dhry_2.c -O2 -o 运行

我终于输入了运行次数为1000000000

然后等待。我用四种不同的优化级别进行编译,得到了这些 DMIPS 值(根据http://en.wikipedia.org/wiki/Dhrystone,这是每秒 Dhrystones 除以 1757):

O0: 8112 O1: 16823.9 O2: 22977.5 O3: 23164.5(这些代表编译器标志,例如 -O2 是优化级别 2 而 O0 是无)。

这将给出以下 DMIPS/MHz(我的处理器的基本频率为 3.4 GHz):

2.3859 4.9482 6.7581 6.8131

但是,我觉得 6.7 太低了。根据我所读到的,A15 的频率在 3.5 到 4 DMIPS/MHz 之间,而第三代 I7 只有两倍?不应该高很多吗?

谁能从我的程序中告诉我是否可以看出我可能做错了什么?还是我对结果的解释有误?

【问题讨论】:

    标签: c benchmarking


    【解决方案1】:

    除了粗略的处理之外,您无法比较不同编译器生成的基准测试结果。作为第一个标准基准(Whetstone)的设计权威,我可以建议将与计算机制造商内部编译器的结果进行比较更不安全。在小型机时代,制造商发现可以优化 Whetstone 基准测试的部分内容,使分数翻倍。我安排了更改和更详细的结果以避免和后来突出优化。

    以下是我最初(1990 年代)Dhrystone 基准测试在 PC 上的示例结果。有关详细信息、更多结果和(免费)执行和源文件,请参阅:

    http://www.roylongbottom.org.uk/dhrystone%20results.htm

    还包括并从相同的源代码编译的结果来自后来的 MS 编译器,一些通过 Linux 和 Android 上的 ARM CPU,加上一个用于 Intel Atom,通过 Houdini 兼容层的结果。我更喜欢术语 VAX MIPS 而不是 DMIPS,因为 1757 除数是 DEC VAX 11/780 的结果。无论如何,还显示了 MIPS/MHz 计算。请注意编译器的差异以及 Android ARM CPU 上特别低的比率。

                              Dhry1   Dhry1   Dhry2   Dhry2     Dhry2
                                Opt   NoOpt     Opt   NoOpt       Opt
                                VAX     VAX     VAX     VAX     MIPS/
    CPU                 MHz    MIPS    MIPS    MIPS    MIPS       MHz
    
    AMD 80386            40    17.5    4.32    13.7    4.53       0.3
    80486 DX2            66    45.1      12    35.3    12.4       0.5
    Pentium             100     169    31.8     122    32.2       1.2
    Pentium Pro         200     373    92.4     312    91.9       1.6
    Pentium II          300     544     132     477     136       1.6
    Pentium III         450     846     197     722     203       1.6
    Pentium 4          1900    2593     261    2003     269       1.1
    Atom               1666    2600     772    1948     780       1.2
    Athlon 64          2211    5798    1348    4462    1312       2.0
    Core 2 Duo 1 CP    2400    7145    1198    6446    1251       2.7
    Phenom II 1 CP     3000    9462    2250    7615    2253       2.5
    Core i7 4820K      3900   14776    2006   11978    2014       3.1
    
    Later Intel Compiler
    Pentium 4          1900    2613            1795               0.9
    Athlon 64          2211    6104            3720               1.7
    Core 2 Duo         2400    8094            5476               2.3
    Phenom II          3000    9768            6006               2.0
    Core i7 4820K      3900   15587           10347               2.7
    
    Linux Ubuntu GCC Compiler
    Atom               1666    5485    1198    2055    1194       1.2
    Athlon 64          2211    9034    2286    4580    2347       2.1
    Core 2 Duo         2400   13599    3428    5852    3348       2.4
    Phenom II          3000   13406    3368    6676    3470       2.2
    Core i7 4820K      3900   29277    7108   16356    7478       4.2
    
    ARM Android NDK
    926EJ               800                     356     196       0.4
    v7-A9              1500                    1650     786       1.1
    v7-A15             1700                    3189    1504       1.9
    
    Atom Houdini       1866                    1840    1310       1.0
    

    【讨论】:

    • (OT) 你还有其他关于基准测试历史的有趣故事吗? (除了维基百科中的内容)。我的第一台 PC 使用 Dhrystones 和 KWhetstones 进行了基准测试。我认为有某种双关语(干 - 湿),但除此之外它只是一堆数字。
    • 好的,我现在明白了。所以我无法将 DMIPS 分数与不同的编译器进行比较。这就解释了。实际上,我发现您的页面正在查找并找到您为 GCC 提供的号码与我的相同。但是我后来找到了这个人:blog.fierydragonlord.com/index.php?/archives/… 在较慢的 i7 上获得了完全相同的 DMIPS 分数。所以根据你的区别是编译器? (他确实说过他使用了 Visual Studio 编译器)。顺便谢谢你的回答
    • 最后一件事。我试图理解这个基准的原因之一是因为我想在几个不同的(非常未知的、特定的)微处理器中运行它。但是,由于它们属于两个不同的公司,并且每个都提供了自己的 gcc 版本来为他们​​的微处理器编译,所以比较这个基准是无效的,对吧?因为它们本质上是两个不同的编译器...
    • 你没有说哪个i7。我发现至少所有单 CPU 基准测试都在 Turbo Boost GHz 上运行。 Dhrystone 1 结果与您的结果相似。 Dhry 2 的产生是因为 Dhry 1 可能被过度优化。
    • 不是无效的,但要小心处理。如果您以所有 Opt 级别运行,您可以更有信心。
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多