パフォーマンスを考えているコーディングしているだろうか?
私もできれば速く効率のよいコードが良いと
考えていたのだが、必ずしもそれが良いコードではないということを知った。
Donald Knutは「An Empirical Study of Fortan Programs」という論文の中
で、プログラムの4%未満が実行時間の50%以上を占めているとしている。
つまりプログラムのほんの4%が実行時間の大半を占めているので、プログラムを
コーディングする際にパフォーマンスを考慮してコーディングするのではなく
読みやすさメンテナンスを最優先コーディングすべきだと思う。
実際にプログラムが完成したところで実行して遅いと感じたらパフォーマンスの
ことを考えても遅くないと思う。実際にプロファイラなどを使ってどこの
箇所が実行を遅くしているのかを調べる必要がある。まあその箇所も全体の4%
を探しあててそこ改善すればだいたいOKになるはずだ。
なので最初からコーディングする際にパフォーマンスを意識して
全体を速くしても意味がないし効率が悪いし、パフォーマンスを意識して
読みやすさメンテナスが悪くなっては元も子ないのである。
コードチューニングのテクニックで「行数が少ない方が速い」という定説があるがこれは嘘である。
下の例
rei1:
for i =1 to 10
a[i] = i
end for
rei2:
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a{5]=5
a[6]=6
a[7]=7
a{8]=8
a[9]=9
a[10]=10
行数が少ない方が速いのというならrei1のほうが速いと考えるだろうが
実際には
| 言語 | rei1の所要時間 | rei2の所要時間 |
| Visual Basic | 8.47 | 3.16 |
| Java | 12.6 | 3.23 |
である。驚きだろうがコードの行数を減らしたからといって速度には関係ないのである。
またコンパイラにもよって速度というのは変わってくるので、以前この方法で速くなったという
経験則はまったく通じないのである。
またこの続きはいつか書きたいと思う。
オライリージャパン
売り上げランキング: 190235

チューニングの初歩
第2版はすごい SolarisとLinux対応
オライリージャパン
売り上げランキング: 218786

内容は良いんですが...
コードレベルのパフォーマンスチューニング


