今日はいっぱいかいてるなぁ~小堤です。
さて、Smarty何気なく使っていますが、便利です。大変便利ですが、やつは読み込んだときに結構コスト食うのです。
時間にすると0.02位かな?たしか。 マシンによると思うけど。
これをすげー高速化したい。xFrameoworkPX2.5では高速化しました。
Smarty自体はいじくりません。いじっちゃだめだとおもうし(笑)
方法は、まず、キャッシュを作ります。
先に答えをいってしまうと、Smartyオブジェクトを作りserialzieした文字列をプログラム内に組み込む。
です。
Smartyは内部でいくつもrequire_onceを行っているためコストがかかります。
なので、一度オブジェクト化して、serialzieして文字列にします。
そして、利用時にunserializeすることでオブジェクトに復元できます。
こうすることで、Smartyの複数のファイル読み込みのコストを削減できます。
しかし、ここで注意が必要です。
SMARTY_DIR
という定数が定義されていない場合、Smartyは自分のファイルのいる場所をSMARTY_DIRとして定義します。
なので、こいつを先に定義してやります。実際にSmartyがおいてあるディレクトリのパスを。
これでOKです。
これだけで、xFrameworkPX2.5においては0.01秒速くなりました。
すごいです・・・。
で、ちなみにうちの開発サーバ(Xeon 2.13GHz/Mem2G/SATA2 250GB) でeAccelerator使った場合、Smartyによる出力まで行って(アクションはまだ動いていない)0.004秒という驚くべき高速化ができました!!まぁほかにもいろいろ高速化した結果ですが。
アクション動かして0.025の目標に対して、まだまだ余裕がある!!!次のバージョン、すげーはやくなるかもですよ?
Pingback: SPaiS