適切に動作していないことが懸念されていたコードの一部について、簡単なベンチマークを作成しました。非常に奇妙な結果が得られました。このベンチマークを見てください:
ベンチマーク
テスト ファイル
ベンチマーク コードは次のとおりです。
$start = microtime(true)*1000;
//code
$log=file_get_contents('test.txt').'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'."\n";
file_put_contents('test.txt', $log, LOCK_EX);
$end=microtime(true)*1000;
$time = $end-$start;
echo 'Time : '.(int)$time.'ms<br />';
$start = microtime(true)*1000;
//code
$log='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'."\n";
file_put_contents('test.txt', $log, LOCK_EX|FILE_APPEND);
$end=microtime(true)*1000;
$time = $end-$start;
echo 'Time : '.(int)$time.'ms<br />';
私が気付いたのは、私の意見では高速であるべき追加オプションが実際には遅いということです。問題が私のベンチマークにある場合は、教えてください。
遅くなる理由を誰かに説明してもらえますか?
さらに、F5 キー (連続して更新) を押したままにすると、テキスト ファイルがクリアされることがわかりました (:O) なぜですか?
編集 Ilya Bursovが言ったように、ベンチマークを100回の反復で実行するように変更しました。追加操作は、読み取りと書き込みが本来あるべきように永遠にかかるのに対し、完了するのにごくわずかな時間がかかるようになりました。ただし、キャッシュをクリアしても、1 回の反復で奇妙な結果が生成されます。誤差の範囲でさえ、多くのことに影響される可能性があることは知っていますが、徹底的な回答をいただければ幸いです。