比较各种C编译器的C优化器的标准基准是什么?
我对ARM基准测试(或可以移植到ARM的基准测试)特别感兴趣。
答案 0 :(得分:5)
https://en.wikipedia.org/wiki/SPECint主要用C语言编写,是用于实际硬件,计算机体系结构理论研究(例如,较大的ROB或模拟CPU中的某些缓存差异)以及编译器开发人员进行测试的行业标准基准。建议的可更改代码源的补丁。
SPECfp(https://en.wikipedia.org/wiki/SPECfp)的C部分也是不错的选择。或者对于编译器后端优化器,前端语言的选择不是很重要。 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结果提交必须包含编译器版本和使用的选项(以及操作系统调整选项),因此希望您可以复制它们。