php 文字列を置換する「str_replace」と「strtr」と「preg_replace」のパフォーマンスを計測する
phpで、文字列を置換する「str_replace」と「strtr」と「preg_replace」のパフォーマンスを計測するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
実行時間計測
microtimeを使用すれば、処理にかかった時間を計測することが可能です。
$startTime = microtime(true);
// 処理を記述
$time = microtime(true) - $startTime; // 処理にかかった時間(ミリ秒)
以下は、「str_replace」と「strtr」と「preg_replace」を使用して、文字列を置換するコードを1000万回実行して、パフォーマンスを計測するサンプルコードとなります。
<?php
// 1000万回実行
define('COUNT', 10000000);
// 計測開始
$startTime = microtime(true);
// 文字列を用意
$str = 'mebee';
for ($i = 0; $i < COUNT; ++$i) {
$result1 = str_replace('e', 'a', $str);
}
result($startTime, 'str_replace');
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i) {
$result2 = strtr($str ,'e', 'a');
}
result($startTime, 'strtr');
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i) {
$result3 = preg_replace('/e/', 'a', $str);
}
result($startTime, 'preg_replace');
function result($time, $str)
{
echo '測定結果 : ' . $str . PHP_EOL;
// 表示は少数第5桁まで
echo "process time: " . number_format((microtime(true) - $time), 5) . ' ミリ秒' . PHP_EOL;
echo PHP_EOL;
}
実行結果
[1回目]
測定結果 : str_replace
process time: 4.39701 ミリ秒
測定結果 : strtr
process time: 3.44025 ミリ秒
測定結果 : preg_replace
process time: 8.30267 ミリ秒
[2回目]
測定結果 : str_replace
process time: 4.24386 ミリ秒
測定結果 : strtr
process time: 3.51744 ミリ秒
測定結果 : preg_replace
process time: 9.02591 ミリ秒
[3回目]
測定結果 : str_replace
process time: 4.47994 ミリ秒
測定結果 : strtr
process time: 3.73809 ミリ秒
測定結果 : preg_replace
process time: 9.41015 ミリ秒
「strtr」が一番パフォーマンスは、良い結果となりました。
-
前の記事
javascript lodashを使って配列内の最小データを取得する 2021.12.05
-
次の記事
Vue.js ドラッグイベントを取得する 2021.12.05
コメントを書く