パフォーマンスを考えているコーディングしているだろうか?
私もできれば速く効率のよいコードが良いと
考えていたのだが、必ずしもそれが良いコードではないということを知った。

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

である。驚きだろうがコードの行数を減らしたからといって速度には関係ないのである。
またコンパイラにもよって速度というのは変わってくるので、以前この方法で速くなったという
経験則はまったく通じないのである。
またこの続きはいつか書きたいと思う。

Unixシステムパフォーマンスチューニング 第2版
ジャン‐パオロ・D. ムズメキ マイク ルキダス Gian‐Paolo D. Musumeci Mike Loukides 砂原 秀樹 高橋 敏明 岡島 順治郎
オライリージャパン
売り上げランキング: 190235
おすすめ度の平均: 4.0

3 チューニングの初歩
5 第2版はすごい SolarisとLinux対応

Javaパフォーマンスチューニング 第2版
ジャック シラジ Jack Shirazi 今野 睦 福与 直也 杉野 博史
オライリージャパン
売り上げランキング: 218786
おすすめ度の平均: 3.0

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

関連する投稿

コメントをどうぞ