Apple M2 for Linux 的 GCC 与 LLVM Clang 编译器性能对比


科技媒体 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%


相關推薦

2022-09-29

k Desaulniers 是谷歌的 Linux 内核开发者,曾因使用 LLVM/Clang 编译 Linux 内核而被众人熟知。最近他开始尝试在 macOS 平台编译 Linux 内核。 从他近日发送的邮件来看,Nick Desaulniers 已成功在他的 Apple M2 MacBook Air 上(运行 macOS 12.5.1 "Mont

2022-11-23

从去年开始,当使用 LLVM 的 Clang 编译器构建 Linux 内核时,已支持为内核构建启用链接时优化 (LTO, link-time optimizations)。而对于使用 GCC 构建 Linux 内核,仍缺少 LTO 支持,近日发布的一系列补丁是实现此目标的最新尝试。 Clang

2022-09-09

持非常稳定了,只有一些微小的细节需要修复。事实上,Apple 的 DriverKit 已经在上游 LLVM 中进行了更改(D121911 [Clang] 添加 DriverKit 支持 ),默认使用 GNU++17 而不是 GNU++14。 目前相关的补丁已经发布,没有突发状况,默认标准转

2022-08-13

压制许多警告,使构建日志更清晰 Boost 的主要测试编译器是 Linux: Clang: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0 Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0 Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0 Clang, C++17: 6.0.1

2022-04-04

nux 5.18 对 LLVM 环境变量的处理进行了改进,以处理版本化编译器二进制文件或 PATH 之外的编译器安装。 LLVM = 1 当前用于定义 LLVM/Clang 工具变量,以使用该非 GNU 工具链构建 Linux 内核。 但是目前,如果想在 PATH 之外使用 LLVM/Clan

2022-10-16

时,大家似乎忘记了,作为对长期以来占主导地位的 GCC 编译器目标的补充支持,英特尔的 ICC 编译器也能够用于构建 Linux 内核(尽管没有被广泛使用)。鉴于此,内核开发人员现在正在考虑删除对 ICC 编译器的支持。 Linux 开

2023-03-07

去年我们报道了 Linux 内核拟放弃支持英特尔 ICC 编译器,如今该讨论终于有了结果。在 Linux 6.3 内核合并窗口打开的最后一天,Linus Torvalds 合并了“删除 Intel ICC 编译器支持” 补丁,从内核中移除了 Intel  ICC  编译器的支

2023-03-20

C++2b 功能做一些准备 实现了更多 C2X 功能 各种 Clang 16 编译器诊断改进 与 LLVM 15 相比,LLVM 16 的 LLD 链接器对 ELF 对象的链接速度要快得多 LLVM 16 LLD 现在也支持 Zstd 压缩,类似于 GCC 13 的 Zstd 支持 LLVM 的 LoongArch CPU 后端已

2023-07-04

M/Clang 17 将提供"-ffat-lto-objects"支持。   据介绍,为编译器启用 Fat LTO 对象支持可以让编译器 IR 与最终目标代码一起保存。因此,这些 "fat" 对象可以用于开发构建和优化构建的生产,但代价是增加了对象大小和更长的构建

2023-12-09

les(7)"。 现在可以使用 NVIDIA CUDA Compiler (NVCC) 为 NVIDIA GPU 编译“HIP”语言代码。参阅“CMAKE_HIP_PLATFORM”变量。 在 Apple 平台上,现在支持“.xcframework”文件夹。 自 CMake 3.0 起已弃用的“exec_program()”命令已被 policy “CMP0153”删

2022-08-01

的 SPIR-V 后端代码 索尼开始向上游贡献 PlayStation 5 编译器 target 完成初始 DirectX/HLSL target 代码 完成初始 LoongArch CPU 架构代码 LLVM/Clang 对 LoongArch 的支持是在今年早些时候继 GCC 12 支持 LoongArch 后开始的,龙芯 LoongArch 架

2023-10-21

语言,它结合了 Python 的易用性以及 C 语言的可移植性和性能,目标是使其成为 AI 研究和生产的理想选择。 下载地址:https://developer.modular.com/download 开发者需要先注册 Modular 账号,然后通过 Homebrew 包管理器下载 Modular CL

2022-03-11

微软方面提出了一项提案,希望为上游 LLVM/Clang 编译器贡献 HLSL、DirectX 和 Vulkan 图形支持。 原因在于,其现有的 HLSL 编译器 DirectX Shader Compiler (DXC) 基于旧的 LLVM/Clang 3.7 分支。而微软计划将其编译器更新到最新的 LLVM,以便为

2022-03-14

微软方面提出了一项提案,希望为上游 LLVM/Clang 编译器贡献 HLSL、DirectX 和 Vulkan 图形支持。 原因在于,其现有的 HLSL 编译器 DirectX Shader Compiler (DXC) 基于旧的 LLVM/Clang 3.7 分支。而微软计划将其编译器更新到最新的 LLVM,以便为 HL