エクセルの t検定を使ってパフォーマンスを検証する

エクセルのt検定を使ってパフォーマンスを検証する

パフォーマンスの検証ってどうやってますか?

いままでは複数回計測して、平均値、または中央値で比較することが多かったです。
今回はもう少し厳密にやろうと思いエクセルを使ったt検定で有意かを確認してパフォーマンスの向上を確認したいと思います。

方針

t検定というのを使います。
たまたま平均がズレて速く見えただけなのか、それとも本当に効果があって速くなったのかを確認します。

パフォーマンスの計測

パフォーマンスを改善前後で複数回計測します。

f:id:nemorine:20200204162343p:plain

ここでは計測条件が同じになるようにすることが重要です。
一例ですが、DB系のパフォーマンス改善であれば以下のようなことに注意すると良いと思います。

  • キャッシュが働いていないか。
  • 計測毎に総データ量が増えすぎていないか。
  • ウィルスバスターやWinowsUpdateなど余計なソフトウェアがリソースを喰っていないか。

エクセルでの分析

  1. エクセルの[データ]-[データ分析]をクリックします。※ない場合はインストールする
  2. [t検定:等分散を仮定した2標本による検定]をクリックします。
  3. 変数1の入力範囲に改善前のデータを入力します。
  4. 変数2の入力範囲に改善後のデータを入力します。
  5. σに0.05(=5%)を入力します。
  6. 出力先を適当に調整します。
  7. [OK]をクリックします。

f:id:nemorine:20200204162229p:plain

結果の確認

パフォーマンスの場合は速くなっているはずということで「片側検定」を使います。 P(T<=t)片側の値を確認し、この値と0.05(=5%)を比較します。 ※もう一つ tの値とtの境界を比較してもできますが、自分はPが直観的なのでこちらを紹介します。

f:id:nemorine:20200204162241p:plain

今回はPの値が0.00032(0.032%)ということで、パフォーマンスが改善されていない状態という前提であれば、ほぼ起きない事象ということがわかります。(帰無仮説
ここからパフォーマンスは改善されているという結論になります。(有意である)

平均で122.5msecから110.1msecで約10%のパフォーマンス改善が認められます。