パフォーマンスの調整が非常に必要なプロジェクトに取り組んでいます。
最適化によってプログラムの速度が向上しない場合に失敗するテストを作成するにはどうすればよいですか?
少し詳しく説明します。
問題は、最適化するパーツを見つけることではありません。そのために、さまざまなプロファイリングおよびベンチマークツールを使用できます。
問題は、自動テストを使用して、特定の最適化が実際に意図した効果をもたらしたことを文書化することです。また、テストスイートを使用して、パフォーマンスの低下の可能性を後で発見できれば非常に望ましいでしょう。
プロファイリングツールを実行していくつかの値を取得し、最適化されたコードがより良い値を生成すると断言できると思います。ただし、これに関する明らかな問題は、ベンチマーク値が厳密な値ではないことです。それらは地域の環境によって異なります。
では、この種の統合テストを行うために常に同じマシンを使用するという答えはありますか?その場合、同じハードウェアでもベンチマークの結果が異なる可能性があるため、結果に多少のあいまいさを考慮する必要があります。では、これをどのように考慮に入れるのでしょうか?
または、おそらく答えは、プログラムの古いバージョンを保持し、前後の結果を比較することですか?これはほとんど環境にとらわれないので、私の好みの方法です。誰かがこのアプローチの経験がありますか?最新バージョンのパフォーマンスが少なくとも前のバージョンと同じくらい良ければ、すべてのテストに合格することができれば、古いバージョンを1つ保持するだけでよいと思います。