2011年6月19日日曜日

CodeComplete からパレートの法則など

リファクタリング』第2章 の「リファクタリングとパフォーマンス」を読んでいたら、Steve McConnell の『Code Complete (下巻)』への参照があった。

以下、「25章 コードチューニング戦略」から抜粋。

パレートの法則:
成果の80%は作業の20%から得られる

Barry Boehm:
20%のルーチンがプログラムの実行時間の80%を消費

Donald Knuth:
プログラムの4%未満がプログラムの実行時間の50%を占める

Jon Bentley:
あるプログラムで、0.5%の行が実行時間の80%を占めていた

Steve McConell:
あるプログラムで、1%未満のコードが実行時間の90%を占めていた

まあ、数字は異なるが言ってる意味は一緒で、要するにパフォーマンスに影響を及ぼしている部分はプログラム中のかなりちっちゃい部分だって事。まあ、アプリケーションのパフォーマンス改善の経験者には、割と常識かと。

「25章 コードチューニング戦略」では、この他に「コードを書くそばから最適化すべきだ」という稚拙な戦略についても、バッサリ斬っている。これは以前の自分のポストでも同じような事を書いた。

また、チューニングを段階的に繰り返して効果を累積させる戦術を、さかんに奨励している。ただし当然ながら、それをやるには、それ相応の内部品質=コード保守性が維持されていなければならない。例えば、パフォーマンスと引換えに内部品質が落ちるような箇所に関して、これを局所化するようなリファクタリングを併用しつつ、コードチューニングを積み重ねるというやり方が必要になると思われる。

あと、コード・チューニングはパフォーマンス改善策の一部であって、実は、アーキテクチャやデータ構造によるパフォーマンスへの影響に比べたら意外と大したことない場合が多いとも言っている。当たり前のことだけど結構大事だと思う。

0 件のコメント:

コメントを投稿