複数のバージョンのプログラムを性能比較するときの方法
Gitを使ってソースコードを管理していて,少し前のアルゴリズムと現在のアルゴリズムを性能比較したくなることがあります.
パラメータファイルの変更くらいなら,そのファイルを2つ作っておくなどでよいですが,複数のソースコードを変更した状態での比較だと面倒.どこかでミスりそう.
Gitは多機能なのでいくつか方法があると思いますが,よく使う2つの方法を記します.
最新コミットと,いくつか前のコミットを比較するとき
# (いま,masterブランチの最新コミットの状態とする.性能評価するスクリプトを実行.) git checkout -b OLD_COMMIT_NAME HEAD~{n} # (OLD_COMMIT_NAMEという名前のブランチを作って,n個前のコミットをひっぱってきた.) # (自動的にOLD_COMMIT_NAMEブランチに移動しているので,性能評価するスクリプトを実行.) git checkout master # (もとの最新コミットに戻ってきた.) # (OLD_COMMIT_NAMEブランチが不要なら,以下のようにして削除しておく.) git branch -D OLD_COMMIT_NAME
最新のコミットに変更を加えて,変更前と変更後で比較するとき
# (いま,変更を加えた状態とする.性能評価するスクリプトを実行.) git stash save # (変更前にもどったので,性能評価するスクリプトを実行.) git stash pop # (変更後の状態になる)
後者のほうがお手軽なものの,最新のコミットでの比較にしか使えないという制約と,なんとなく不安だという理由があって(私だけかもしれないが),前者を使うようにしています.
ただし,変更をいきなりmasterにコミットするのは抵抗があるので,devブランチかなにかを作っておいて,そこから前者の方法にもっていくようにしています.