変則カレンダー

出向先の会社はハードウェア寄りなので、製造ラインや出社日数などの関係で、週休二日制が崩れたり祝日が移動したりする。これにより、今日は土曜日なのに出勤。あいかわらずやることはないので、高速化の実験をする。
議題:switch文はあとのほうの条件ほど重くなるのか?
VisualC++6.0を使って書いたswitch文を用意。caseは0〜99の100個。0、99、-1(default記述なし)で調査。500000回繰り返し実行させてみた。結果は、どれも同じだった。0.16秒くらい。
それだけじゃつまらないので、caseを0〜10、90〜99の20個に減らしてみた。結果、99を条件にしたときだけ、実行時間が0.2秒に伸びた。なぜだろう?数を多くしたときのほうが軽いということは、コンパイラか最適化の問題かな? VisualC++を使う場合、switch文の最適化はコンパイラが勝手にやってくれるので考えなくてよいみたいだな。
結論:高速化はコンパイラがやってくれるので、コードは可読性を重視しよう。

レビュー

某東大生に「コーディングの勘と経験を磨くにはどうしたらええかのう」と聞かれた。知らんがな。俺が知りたい。とりあえず「コードレビューでもしなされ」と答えたら「なにそれ」と返されたので困った。
コードレビュー。各自の書いたコードを持ち寄り、どういう意図で書いたコードなのかを説明しあう。無駄に処理を重くするループ、同様の処理のコピペ、可読性の低いソースなどについて互いにダメ出しをし、相手をつぶすお互いのコーディングセンスを磨く。それがコードレビュー。楽しいよ。へこむけど。