彼得·艾森特劳特:新编译器,新计时

💡 原文英文,约300词,阅读约需2分钟。
📝

内容提要

Clang 18 和 GCC 14 已经发布。在 macOS 14 上编译 PostgreSQL 时,Clang 18 的速度大约是 GCC 14 的两倍。Clang 18 的性能相比之前的版本有所提升,现在与 Apple Clang 相当。GCC 的性能在每次发布时都在下降。

🔎

延伸解读

编译器性能趋势解读

文章数据显示,GCC 从版本12到14,编译时间从4分30秒增加到4分57秒,呈现逐版本变慢的趋势。而Clang在16和17版本因编译器bug导致性能下降,18版本修复后,编译时间降至2分18秒,甚至优于15版本的2分56秒。这表明Clang在性能优化上取得了进展,而GCC可能需关注性能回归问题。

并行编译的扩展性

在-j8并行编译测试中,Clang 18用时约20秒,GCC 14用时约44.6秒,两者差距与-j1时相似,说明Clang 18在并行编译时也能保持优势,且扩展性良好。对于需要频繁编译大型项目的开发者,选择Clang 18可以显著减少等待时间。

平台与版本选择建议

测试基于macOS 14平台,使用PostgreSQL REL_16_3标签。结果显示Clang 18在该平台上编译速度约为GCC 14的两倍,且与Apple Clang性能相当。因此,对于在macOS上编译PostgreSQL的用户,Clang 18是当前更高效的选择。但需注意,其他平台或项目可能结果不同。

❓

Q&A

Clang 18 和 GCC 14 的发布有什么重要信息?

Clang 18 和 GCC 14 已经发布,Clang 18 在 macOS 14 上编译 PostgreSQL 的速度是 GCC 14 的两倍。

Clang 18 的性能相比之前的版本如何?

Clang 18 的性能相比之前的版本有所提升,现在与 Apple Clang 相当。

在 macOS 14 上编译 PostgreSQL 时,Clang 18 和 GCC 14 的速度差异有多大?

在 macOS 14 上,Clang 18 的速度大约是 GCC 14 的两倍。

GCC 14 有哪些新特性?

GCC 14 支持 -Wmissing-variable-declarations 选项,PostgreSQL 可能会使用它。

Clang 18 在编译 PostgreSQL 时表现如何?

Clang 18 在编译 PostgreSQL 时表现良好,显示出线性扩展性。

GCC 的性能趋势是什么?

GCC 的性能在每次发布时都在下降,逐渐变得更慢。

🏷️

标签

➡️

继续阅读