[PHP-users 18465]Re: はじめまして。

Yasuo Ohgaki yohgaki @ ohgaki.net
2003年 10月 16日 (木) 02:20:23 JST


大垣です。

Osamu Shigematsu wrote:
> 重松です。こんにちは。
> 
> 
>>また、クラスでPHPソースを記述するとべたよりも高速に動作するらしい
>>との噂もたってます。
>>100行くらいのクラスで作成したソースを試しに動作させましたが
>>ほとんど変わりませんでした。
>>環境は、Redhat7.3+APACHE2.0.43+PHP4.3.3+PostgreSQL7.3.2です。
> 
> 
> 普通に考えると速くなる理由がありませんが。
> 
> 特に PHP は実行時にいちいちパースするわけで、クラスにすると、
> 親クラスなんかもパースして回らないといけません。
> 
> やることが上から下にだらだら書いてあるのと比べて、
> 仕事が増えているのに、なぜ速くなるのか、不思議でならないんですが、
> うわさの根拠(?) というかは、何なんでしょうね。
> # インチキくさいからうわさなんでしょうが。
> 
> 確かふじもとさんも、遅くなるといってました。
> 

遅くなります。PHPのオブジェクトのメソッド呼出しは関数を
二回呼ぶのと同じような仕組みなっています。そして関数呼び
出しはオーバーヘッドが比較的大きいです。普通にOOPすると
小さい関数(get/set系)の呼出しが多くなるため遅くなります。
更に重松さんの至適通りスーパークラスのロード/パースのオー
バーヘッドが追加されるので早くなる事はありません。
# Zendのサイトにも書いてあるアーティクルがあったはずです。
# 「OOPは使うな」「関数の再定義はするな」と :)

私もクラスは使っていますが過度なOOPはしていません。ネーム
スペース代りに使うような使い方をよくしています。
パフォーマンスがどうしても必要なサイトではOOPは使用しない
よう、いつも提案しています。

OOPをするならスクリプトキャッシュは必須です。
Requests/secで2倍、処理遅延で数倍の性能向上も簡単に達成で
きる場合が多いです。
# この前、smartyで試した時もこのくらいの結果でした。
# smarty結構重いですね...

元々OOPは性能面のみを重視したプログラミング技法では無いの
で、バランスが重要かと思います。パフォーマンスだけならCで
CGI、と言うことになりますから。
# PHPにもinline optimizationが必要かな...

--
Yasuo Ohgaki




PHP-users メーリングリストの案内