Avec l’Apple M2 exécutant Asahi Linux, vous vous demandez peut-être s’il est préférable d’utiliser le compilateur GCC tel qu’il est par défaut sur Arch Linux en amont ou si LLVM Clang sera offrent de meilleures performances compte tenu de toute l’utilisation de LLVM/Clang par les fournisseurs AArch64, y compris la propre chaîne d’outils du compilateur Xcode d’Apple qui l’utilise. Si vous vous interrogez sur GCC contre Clang pour créer des binaires sur l’Apple M2, voici quelques points de repère.
Avec le MacBook Air Apple M2, j’étais curieux de savoir comment GCC contre Clang était en compétition pour la performance, alors j’ai couru quelques repères. L’Apple M2 exécutait Asahi Linux basé sur Arch comme la seule distribution actuellement capable d’exécuter ce dernier Apple Silicon. Avec son noyau basé sur Linux 5.19, j’ai testé à la fois LLVM Clang 14.0.6 puis GCC 12.1, tous deux emballés pour Arch/Asahi. Tout au long de tous les tests, les CFLAGS/CXXFLAGS ont été maintenus les mêmes et ciblaient le niveau d’optimisation-O3.
De là, des dizaines de tests C/C++ différents ont été effectués pour voir si les binaires résultant de GCC 12 ou Clang 14 étaient plus rapides sur l’Apple M2 sous Linux.
Alors que LLVM Clang est largement utilisé par les fournisseurs Android AArch64, Apple investit massivement dans LLVM en amont dans le cadre de leur utilisation de Xcode, etc. du moins en ce qui concerne l’exécution sur (Asahi) Linux, le compilateur GCC 12 produisait souvent des binaires AArch64 plus rapides que Clang.
Mais il y avait encore de nombreux cas où les binaires construits par Clang étaient plus rapides sur Apple M2…
Et souvent, un pile ou face entre LLVM Clang et GCC compte tenu de leur compétitivité importante au fil des ans, en particulier sur x86_64 mais aussi sur AArch64/ARM64.
Comme c’est souvent le cas, cela peut dépendre de la ou des bases de code particulières qui vous intéressent le plus, que GCC ou Clang soit le plus rapide choix.
Évidemment, il y a d’autres considérations à prendre en compte dans la sélection du compilateur au-delà de la vitesse du binaire résultant… Prise en charge des désinfectants, diverses options de débogage, vitesse des constructions, options de renforcement du compilateur/sécurité, la qualité des messages d’avertissement/d’erreur, la taille des binaires résultants, et bien plus encore, doivent également être pris en compte lors du choix entre GCC et Clang pour la construction de binaires de production/version.
Les compilateurs GCC et Clang avaient des pistes solides dans différents domaines en fonction des bases de code/applications que vous utilisez le plus ou que vous souhaitez maximiser le potentiel de performances.
Si vous prenez la moyenne géométrique de tous les benchmarks, GCC 12 était près de 7 % plus rapide que Clang 14 pour ces tests sur le MacBook Air Apple M2 exécutant Asahi Linux.
Ceux qui sont intéressés par tous les chiffres complets peuvent voir cette page de résultats pour tous les détails.