最終更新日 2007年06月27日 up top

プログラムの最適化 その1



図のようなフォームがあったとする。 ステータスバーの表示・非表示を選択できるとして、 ステータスバーの表示・非表示に関わらずステータスバーに文字を表示させた方が速いだろうか。 それともステータスバーの状態をチェックし、文字を表示させたりさせなかったりした方が速いだろうか。 コードで書けば、

'// code 1 ToolStripStatusLabel1.Text = "0123456789abcdefghijklmnopqrstuvwxyz" '// code 2 If StatusStrip1.Visible Then ToolStripStatusLabel1.Text = "0123456789abcdefghijklmnopqrstuvwxyz" の違いである。5億回ループさせてみた。結果code 1の方が11秒でcode 2の方が49秒であり、 ステータスバーの状態をチェックした方が約5倍速かった。 念のため表示する文字列を「0123456789」と短くしてみたが48秒と誤差程度の違いであった。 さらに空欄でも試してみたが、こちらも48秒であった。

当たり前といえば当たり前の結果であるが、プログラムのコードを見たとき、 条件判断がない方がロジックが簡単であり、プログラミングが楽で、(個人的には)美しい。 しかし、ちゃんと条件判断をすると1/5000万秒ほど速くなる。

だからどうしたというわけだが、自分への戒めのために。 VB.NET 2005 Expressでの話だが、処理系では表示されないコントロールへの処理はしないものもあるかもしれない。 その場合はcode 2の方が遅くなるであろう。