苹果开源 Swift 基准测试套件

阅读数:657 2016 年 2 月 14 日

话题:开源Apple语言 & 开发

苹果开源了Swift 基准测试套件,在向 Swift 语言添加新特性时,它是跟踪 Swift 性能及捕获性能衰退的一个重要部分。

Swift 基准测试套件由一个 Swift 源文件集合和若干 Python 脚本组成,前者实现了测试套件和基准测试辅助功能,后者实现了用于指标对比的工具。

苹果建议在提交任何可能影响性能的变更之前运行基准测试套件。这可以通过在提交 pull request 之前向build-script传递--benchmark标识来实现,Swift 自动构建脚本会负责完成基本的工作,例如构建兼容 Swift 的 LLDB,针对特定平台构建,在构建完成后执行测试等等。这有助于捕获潜在的性能衰退。为了使基准测试结果有意义,需要首先在 Swift 的主分支上运行一个基线基准测试,然后再在开发分支上运行基准测试,后一次的运行结果会自动同前一次的运行结果进行对比。

默认情况下,只有面向 OS X 平台的 Swift 基准测试会被编译,但可以像下面这样在命令行中指定其他平台:

复制代码
$ swift/utils/build-script --ios --watchos --tvos

在使用基准测试驱动程序时,开发人员可以控制每个测试样本中的循环迭代次数以及每个测试中的测试样本数,例如:

复制代码
$ ./Benchmark_O --num-iters=1 --num-samples=1

据苹果工程师 Luke Larson 介绍,目前,Swift 基准测试套件包含 75 个基准测试,但苹果欢迎开发人员为新的基准测试、辅助程序库以及一般改进作贡献。Larson 表示,苹果对贡献者有一个重要的要求,那就是必须遵循同 Swift 一样的许可协议。因此,将基准测试移植到其他许可协议下是不会被接受的。

目前,Swift 基准测试套件并没有同最近发布的 Swift 持续集成系统整合,后者可以为 OS X、iOS 和 x86_64 Ubuntu Linux 等平台构建和运行测试。按照 Jenkins 的说法,Swift CI 系统旨在能够支持更多来自 Swift 开发社区的平台和体系结构。Swift CI 系统允许在 pull request 中运行测试(比如在提交到主分支之前),并将失败信息通知给负责的开发人员。不过,按照 Larson 的说法,Swift 基准测试套件将来会同 Swift CI 系统集成。

查看英文原文:Swift’s Benchmarking Suite is Now Open Source