@lsmn
2016-02-13T16:03:49.000000Z
字数 1075
阅读 2605
开源
苹果
Swift
基准测试
201602
苹果开源了Swift基准测试套件,在向Swift语言添加新特性时,它是跟踪Swift性能及捕获性能衰退的一个重要部分。
苹果开源了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系统集成。