还记得 Zapcc 编译器吗?一个旨在减少编译时间的编译器,现在已正式开源。

澳门新葡萄京所有网站 1

LLVM/Clang 6.0 和 5.0 的编译器 Benchmark
测试这次会在四个不同的系统上进行,包括了 Intel/AMD Linux 平台,其中
Intel 和 AMD 各占两个。

Zapcc 是基于 LLVM/Clang 的 C++ 编译器,自 2015
年开始,它就一直在致力于让自己成为比 Clang 本身更快的 C++ 编译器。Zapcc
采用激进的缓存策略(aggressive
caching)和其他技术来显著加快编译时间,同时作为 GCC 或 Clang
的替代品。Zapcc 为了做到比其他 C++
编译器更快,采取的方法是将一些编译器的结构缓存在服务器上,从而大幅度提升编译速度。

微软最近发布将在2015年11月 Visual C++ 更新中加入 Clang 编译器 ,Clang
开源编译器以相比GCC更快的编译速度和更优的错误提示著称。

四个系统都运行了 Ubuntu Linux x86_64,Intel 和 AMD
平台分别的配置如下:Intel Core i7 8700K (Coffeelake)、dual Xeon Gold
6138 (Skylake X)、Ryzen 7 1700 (Znver1) 以及 AMD EPYC 7601 (Znver1)。

去年 Zapcc 发布了 v1.0 里程碑阶段的版本,并于本周宣布开源。

Clang关于C,C++,及Objective C的编译器,能够生成LLVM
的中间代码,是支持跨平台编译的开源项目。起初Clang只支持Apple开发,在2007年开源。目前,Google,Sony
以及其他大公司都在使用。

除了默认的 C++14/GNU++14,Clang 6.0 还正式完成了 AMD Zen “znver1”
的程序调度模型,而英特尔方面也对多代 CPU 进行了调度程序的改进。

来自 Zapcc 背后的公司 Ceemple 的人写道,他们分享了他们拥有的
Zapcc。由于用户的请求,这个更快的 C++ 编译器已在 LLVM
许可证下开源。他们希望 Zapcc 开源后能加速这款以速度为宗旨的 C++
编译器的开发。

VisualStudio 2015已经整合了Android和iOS
开发使用的Clang。编译Android应用时可选择GCC或Clang 工具箱。

澳门新葡萄京所有网站 2

该项目的代码现在托管在GitHub,而构建过程/环境要求则和编译
Clang 的要求一样。此外,作者表示会努力为 Zapcc 添加一些新的测试基准。

即将集成的Clang 编译器将支持Windows 应用程序。

参与测试的 LLVM 5.0.1 和 LLVM 6.0.0
稳定版都是来自 apt.llvm.org。测试期间,每个系统都将其
CFLAGS/CXXFLAGS 设置为 “-O3 -march=native”。这次编译器 Benchmark
测试使用了开源的 Phoronix Benchmark 测试套件。

(文/开源中国)    

Visual C++ 是由 Visual Studio
IDE,前端编译器(生成AST文件),后端编译器(可以读取AST文件,并生成可执行的代码)等几部分组成,其中前端编译器成为C1,后端编译器称为C2,C1和C2是不同的开发团队。

接下来,我们看看测试结果如何:

微软此次会将Clang 加入到C1组中,C2继续后端编译器开发工作。Clang 生成LLVM
IR文件,会在C2 编译转换。代码生成过程保持不变。

澳门新葡萄京所有网站 3

此次微软引入Clang/C2是为了支持跨平台开发。就拿Office来说,使用Clang
之后,Office可以在Andorid,iOS,Windows10 运行畅通,有效提升代码质量。

从 PolyBench-C Benchmark 测试可以看到,Clang 6.0  在 AMD Zen
系统似乎有明显的回落,而在英特尔平台上,性能没有太大的变动。

预计2016年2月,Clang/C2有望发布。微软也正在计划发布“build
only”版本的Visual
C++,该版本只需要安装编译器和命令行工具就可运行,可以不需要Visual Studio
IDE。

澳门新葡萄京所有网站 4

 

在大多数 benchmark 测试中,Clang 6.0 的表现与 Clang 5.0.1
相比几乎没有什么变化,这里也省略了许多结果。

澳门新葡萄京所有网站 5

使用 Clang 6.0 时,BLAKE2 似乎对英特尔 Skylake/Coffeelake
的设置稍有改进,而对于 Znver1 处理器则保持不变。

澳门新葡萄京所有网站 6

澳门新葡萄京所有网站 7

在一些测试中,我们发现 Core i7 8700K Coffeelake 系统在全新的 Clang
编译器更新中拥有更好的性能。

澳门新葡萄京所有网站 8

在 SciMark2 的 FFT 测试中,i7-8700K 明显是最大的赢家。

澳门新葡萄京所有网站 9

在其他的子测试中,i7-8700K的运行时间更短。在某些情况下,AMD
方面也有一些小幅度的改进。

澳门新葡萄京所有网站 10

TSCP chess benchmark 测试显示,i7-8700K
的速度稍慢,而其他系统则略有改善。

澳门新葡萄京所有网站 11

我们发现,强大的 EPYC 和 Xeon 系统在使用 Clang 6.0 时确实有更快的 John
The Ripper 性能。

澳门新葡萄京所有网站 12

除了 dual Xeon Gold 外,其他系统的 AVX-heavy Himeno
压力求解器的性能都得到了改善。

澳门新葡萄京所有网站 13

澳门新葡萄京所有网站 14

但随着 LLVM 和 Clang 增加更多的优化和功能,在这项测试中,6.0
版本的编译时间显然比在 5.0 版本下显着减慢。

澳门新葡萄京所有网站 15

C-Ray 多线程射线追踪器(ray-tracer) z在 LLVM 6.0 上也变慢。

澳门新葡萄京所有网站 16

澳门新葡萄京所有网站 17

澳门新葡萄京所有网站 18

不过在其他一些测试中,Core i7 8700K 再次显示出 LLVM Clang 6.0
的一些小的性能改进。

可以看到,在使用 Linux x86_64 的流行英特尔和 AMD 平台上,LLVM Clang 5.0
和 6.0 之间的性能只发生了微小的变化。不过随着 LLVM/Clang
在过去的几年里已经成熟了许多,而且现在几乎与 GCC
在很多工作负载上并驾齐驱。

原文:phoronix
编译:开源中国

(文/开源中国)