FrameworkのFuelPHP1.5.3を利用することになったのでお勉強開始。itemsテーブルをTASKのfromdbでscaffold。itemsここで生成されたスケルトンをカスタムして、一般的なDBデータを一覧表示を実装するテストを実施してみたが、1ページあたりの表示可能件数を指定できるようになったところで100,300,500件の表示をすると結構応答が遅いことに気がついた。4GB・SSDなので、さほど速いPCでもないが、このくらいで遅くなるのもちょっと変だなと調べてみた。Profilerの結果FuelPHPに付属のProfilerをONにしてみて300件のリストを表示してみると、時間がかかっているところがあるようだ。Profilerが優れているなぁ。true,XHProfによるプロファイル次にもっと詳細にプロファイリングするためにXHProfを仕込んで実行してみたところ、2箇所が怪しい。Fuel\Core\Html::anchor。できたてのViewはリストの1つ1つの項目でHtml::anchorをCallして、view,edit,deleteのanchor要素をつくるので、Html::anchorは行数×3回呼ばれる。そりゃ遅いしHTMLのデータ量も多くなる。これは全部リンクを作る必要は無いので外す。すると若干軽くなった。1つはoutput_filterに指定されている、Security::htmlentities。Viewに送られるデータを全部自動的にSecurity::htmlentitiesでフィルターかけるようだ。これは何となく重そうなので、Security::htmlentitiesを外す方法を調べてみた。外してみる実験Security::htmlentitiesを外してテストしてみる。※実運用ではありません!実運用では何らかの方法で出力を無害化必要!まずは、configなどはそのままの状態で、Security::htmlentitiesが有効な場合。500件表示で、7.12秒かかる。Security::htmlentitiesが全くかからないようにしてみる。false,500件表示で、1.52秒!改善している。同じようなものだが、'Security::htmlentities'をフィルタから外した。今度は、output_filterはONだが、コントローラーでViewにデータを渡すときにフィルタされないようにset_safeで渡してみた。使う方法もあるかもしれない(未調査)。FuelPHPで、データが多くパフォーマンスが悪い場合は、Security::htmlentities以外の方法で出力をエスケープするのも1つの方法のようだ。