作者: dune
日時: 2004/9/11(10:53)
極悪です。

第8号が出ていたので読みましたが、内容があんまりなので
メールを書きました。が「はじめまして、極悪と申します」
と書くのがめんどくさくて、またやめてしまいました。
使ってるフリーソフトで「こうなってるとウレシイです」
みたいな建設的なメールは書きやすいのですが、この手の
批判的な内容は逆に自分の知識も問われるのでなかなか出せ
ないっす。



こんにちは。

『初心者のためのプログラムを10倍早くする方法メール
マガジン』第8号の内容で気になる点があります:

>今回はループの中の処理を高速化するテクニックの続編として、
>メンバ変数へのアクセスを減らす方法をご紹介しました。
>
>メンバ変数へのアクセスにはthisを使わなければいけないので、
>コストがかかってしまうということでしたね。
>
>今回のテクニックはオブジェクト指向プログラミングでは頻繁に
>使うと思います。
>いろいろ応用してみてください。

この結論はピントがずれているのではないでしょうか。

今回の例はループの中で毎回「定数」nDatas を求めるな、ループ
に入る前に計算して結果を再利用しろ、ということだと思います。
例えば GetLength の中身が return 123; の一文だけだったり
すると処理時間に有意差は出ません。ということはメンバ関数も
オブジェクト指向も関係なくて、定数や結果の分かっている if
をループの中でいちいち実行するな、という定石のひとつを説明
しているにすぎません。

この場面でベンチマークに差が出たのをメンバ関数のせいにするの
はピントがずれています。説明を読むとメンバ関数のアクセスが
原因で遅くなる可能性は確かにある気がするので、別の例をお願い
します。
-- 
極悪, FZH01112 at nifty.com
http://hpcgi1.nifty.com/dune/gwiki.pl?