php ファイルに書き込みを行う「file_put_contents」と「fwrite」のパフォーマンスを計測する
phpで、ファイルに書き込みを行う「file_put_contents」と「fwrite」のパフォーマンスを計測するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
実行時間計測
microtimeを使用すれば、処理にかかった時間を計測することが可能です。
$startTime = microtime(true);
// 処理を記述
$time = microtime(true) - $startTime; // 処理にかかった時間(ミリ秒)
以下は、「file_put_contents」と「fwrite」を使用して、それぞれ「hoge1.txt」と「hoge2.txt」に同じ内容書き込みを行うコード1万回実行して、パフォーマンスを計測するサンプルコードとなります。
<?php
// 1万回実行
define('COUNT', 10000);
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i) {
file_put_contents('hoge1.txt', 'hogehoge');
}
result($startTime, 'file_put_contents');
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i) {
$fp = fopen('hoge2.txt', 'w');
fwrite($fp, 'hogehoge');
fclose($fp);
}
result($startTime, 'fwrite');
function result($time, $str)
{
echo '測定結果 : ' . $str . PHP_EOL;
// 表示は少数第5桁まで
echo "process time: " . number_format((microtime(true) - $time), 5) . ' ミリ秒' . PHP_EOL;
echo PHP_EOL;
}
実行結果
[1回目]
測定結果 : file_put_contents
process time: 10.94132 ミリ秒
測定結果 : fwrite
process time: 11.94351 ミリ秒
[2回目]
測定結果 : file_put_contents
process time: 12.48745 ミリ秒
測定結果 : fwrite
process time: 10.70957 ミリ秒
[3回目]
測定結果 : file_put_contents
process time: 10.94795 ミリ秒
測定結果 : fwrite
process time: 12.73851 ミリ秒
実行した結果を見る限り、「file_put_contents」の方がパフォーマンスは良さそうです。
-
前の記事
javascript lodashを使って必ず指定した範囲内の数値に変換する 2021.12.20
-
次の記事
MySQL 平方根を求める 2021.12.20
コメントを書く