私はPHPでアプリケーションを作成していますが、PHPがバッファーとバッファー処理をどの程度適切に処理するかを判断するために、自分でテストを行うことにしました。具体的には、手動で呼び出すかどうかを確認したかったので、プログラムに大きな影響がありますob_start()
。ob_flush()
10KBのloremipsumを作成して、仕事に行きました。10KBのlipsum(display:none divブロック内)を100回書き込むforループの開始と終了にタイマーをPHPに入れて、合計1MBのデータを作成しました。これは、ランダムなCPUで十分な作業になると考えました。ロードは私のデータをあまり捨てません。
PHPタイマーに加えて、Chromeの開発者ツール(F12)を開いて、「時間」と「待ち時間」のフィールドを記録しました。用語が正しければ、「時間」はページが応答してレンダリングするのにかかった合計時間であり、「レイテンシ」はページがサーバーから最初にデータを受信するまでの時間です。
謎は次のとおりです。10KBのlipsum100xを書き込む以外に何もしない場合、平均は次のようになります。
PHP Time: 0.00630ms
Chrome Time: 565.6ms
Chrome Latency: 28.3ms
ob_start()
私が最初とob_flush()
最後に電話をかけるとき:
PHP Time: 0.00792ms
Chrome Time: 540ms
Chrome Latency: 33ms
ただし、これが謎です。電話をかけるob_start()
とob_flush()
、テキストの各10KBブロックの最初と最後で、Chromeが報告するレイテンシが4倍に急上昇します。
PHP Time: 0.005814ms
Chrome Time: 624.7ms
Chrome Latency: 134.9ms ???
私の知る限り、PHP出力の途中でバッファーを1/100フラッシュしているので、クロームレイテンシーを100分の1に削減する必要があります。ob_start()
とはより高いバッファーで動作し、実際にはより低いバッファーにフラッシュされることを知っていob_flush()
ます。より低いバッファーが同じ間隔でフラッシュすることを期待します。つまり、ほぼ同じレイテンシーが見られます。
私のテストリグは、Nvidia IONグラフィックス、Windows 7ホームプレミアム(32ビット)、およびほとんどデフォルト設定でApache2.2.22を実行するWAMPserverを備えた非常に控えめなIntelATOMネットブックです。Chrome24.0.1312.52mを使用しました。CPU負荷は中程度でしたが、テスト中は100%ではなく、RAMはほぼ満杯ではありませんでした。
テストコード: http: //pastebin.com/zf62Y4yz
ありがとう!