【问题标题】:Benchmarks for C compiler optimizationC 编译器优化的基准
【发布时间】:2019-07-16 08:33:30
【问题描述】:

比较各种 C 编译器的优化器 C 的标准基准是什么?

我对 ARM(或可以移植到 ARM 的)基准特别感兴趣。

【问题讨论】:

标签: c benchmarking compiler-optimization


【解决方案1】:

https://en.wikipedia.org/wiki/SPECint 主要用 C 语言编写,是实际硬件、计算机体系结构理论研究(例如更大的 ROB 或模拟 CPU 中的一些缓存差异)以及编译器开发人员测试提议的补丁的行业标准基准更改代码生成。

SPECfp 的 C 部分 (https://en.wikipedia.org/wiki/SPECfp) 也是不错的选择。或者对于编译器后端优化器,前端语言的选择不是很重要。 Fortran 程序也很好。


相关:Tricks of a Spec master 是一篇涵盖不同基准的论文。也许最初来自一次会议。

在这个闪电般的谈话中,我将 在高水平覆盖的性能特点 这些基准在 GCC 的优化方面 做。例如,一些基准测试是经典的浮点应用程序并受益于 SIMD(单指令多数据)指令,而其他基准测试则没有。


维基百科已经过时了。 SPECint/fp 2017 来了很久,但它是在 2017 年发布的,比 2006 年有了显着的改进。一些基准测试通过巧妙的编译器优化(如循环反转)而变得轻而易举。 (多年来,一些编译器基本上添加了模式识别来优化 libquantum 中的循环,但即使在安全的情况下,它们也不能总是对其他循环执行此操作。显然它也可以很容易地自动并行化。)

为了测试编译器,您实际上可能想要代码进行积极优化,可以在其中找到主要的简化,因此 SPECcpu 2006 是一个不错的选择。请注意 libquantum 的问题。

https://www.anandtech.com/show/10353/investigating-cavium-thunderx-48-arm-cores/12 将 gcc 描述为“不会尝试“破坏”基准 (libquantum...)”的编译器。但是,CPU 供应商使用/用于他们自己的硬件(Intel x86 和 Sun UltraSPARC 以及更高版本的 x86)提交 SPEC 的 ICC 和 SunCC 等编译器在 SPEC 基准测试中尽可能地激进。

SPEC 结果提交需要包括编译器版本和使用的选项(以及操作系统调整选项),因此您可以复制它们。

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 2014-02-21
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多