科技媒体 Phoronix 对运行在 Linux 上的 Apple M2 芯片 的 GCC 和 LLVM Clang 编译器进行了性能测试和对比。
此次测试采用的设备是 Apple M2 MacBook Air ,运行基于 Arch 的 Asahi Linux 系统(这是目前唯一能够运行最新 Apple M2 芯片的发行版),测试基于 Linux 5.19 内核,编译器版本分别是 LLVM Clang 14.0.6 和 GCC 12.1,它们都是 Arch/Asahi 最新版本的编译器。在所有测试中,CFLAGS/CXXFLAGS 保持不变,针对 -O3 优化级别。
一共进行了数十种不同的 C/C++ 基准测试,旨在观察在运行 Linux 的 Apple M2 芯片上,GCC 12 和 Clang 14 生成的二进制文件哪个性能更佳。
测试结果如下:(选取部分结果)
可以看到,尽管 LLVM Clang 被 AArch64 供应商广泛使用,且 Apple 在上游 LLVM 上投入巨资,作为其 Xcode 使用的一部分。但至少在(Asahi)Linux 上运行时,GCC 12 编译器仍有一些二进制文件比 Clang 编译出来的更快,性能更好。
当然,LLVM Clang 也不落下风,在相当多程序中的表现超越 GCC 。
下面上最终结果:GCC 和 Clang 编译器在不同领域分别有很强的先发优势,如果采用所有测试结果的几何平均值,在运行 Asahi Linux 的 Apple M2 MacBook Air 上进行测试时,GCC 12 比 Clang 14 快了近 7%。