AppleがSwiftのベンチマーキングスイートをオープンソース化した。これはSwiftのパフォーマンスをトラックし、言語に新機能を追加した時のパフォーマンスリグレッションの捕捉に重要だ。
Swiftのベンチマーキングスイートは、テストスイートとベンチマーキングヘルパー関数を実装したSwiftのソースファイルと、テストハーネスとメトリクス比較に便利なものを実装した多数のPythonスクリプトで構成されている。
Appleは、パフォーマンスに影響のありそうな変更をコミットする前、そしてプルリクエストをサブミットする前に、build-script
に--benchmark
フラグを指定して、ベンチマーキングスイートを走らせることを推奨する。build-scriptはSwiftのビルド自動化スクリプトで、SwiftコンパチブルなLLDBのビルド、指定プラットフォームのためのビルド、ビルド後のテスト実行などの基本的なタスクを担当するものだ。ベンチマーキングスイートは潜在的なパフォーマンスリグレッションを捕捉するのに役立つ。ベンチマーク結果を意味のあるものにするため、最初にSwiftのmaster
ブランチでベースラインとなるベンチーマークを取っておき、それから開発ブランチでベンチマークを再実行すると良いだろう。結果は以前の実行結果と自動的に比較される。
デフォルトでは、SwiftベンチマークはOS X用でのみコンパイルされるが、コマンドラインで追加のプラットフォームを指定することができる。
$ swift/utils/build-script --ios --watchos --tvos
ベンチマークドライバを使うことで、開発者は各テストサンプルの反復回数や各テストに要するサンプル数などをコントロールすることができる。
$ ./Benchmark_O --num-iters=1 --num-samples=1
AppleのエンジニアLuke Larsonによると、Swiftのベンチマーキングスイートには現時点で75のベンチマークが含まれるが、Appleはヘルパーライブラリや一般的な改善のための新しいベンチマークの寄贈を呼びかけている。Larsonによると、重要な要件はlicense as Swiftと同じライセンスをカバーすることだ。それ以外のライセンスは受け付けられない。
Swiftのベンチマーキングスイートは現時点では、最近発表されたSwift CI(継続的インテグレーション)システムに統合されていない。Swift CIはOS X、iOS、x86_64 Ubuntu Linuxのためのビルトとテスト実行を行うものだ。これはJenkinsをベースとし、Swift開発コミュニティからもたらされるプラットフォームとアーキテクチャをさらにサポートすることを目指している。Swift CIシステムはプルリクエスト内、すなわちmaster
にコミットされる前にテストを実行し、当該開発者に問題を通知することができる。Larsonによると、今後、SwiftのベンチマーキングスイートはSwift CIシステムに統合されるそうだ。
Rate this Article
- Editor Review
- Chief Editor Action