php 文字列を分割する「explode」と「preg_split」のパフォーマンスを計測する

phpで、文字列を指定した区切り文字で分割する「explode」と「preg_split」のパフォーマンスを計測するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
実行時間計測
microtimeを使用すれば、処理にかかった時間を計測することが可能です。
$startTime = microtime(true);
// 処理を記述
$time = microtime(true) - $startTime; // 処理にかかった時間(ミリ秒)
以下は、「explode」と「preg_split」を使用して「,」で文字列を分割コードを1000万回実行して、パフォーマンスを計測するサンプルコードとなります。
<?php
// 1000万回実行
define('COUNT', 10000000);
$str1 = "mebee,mebee,mebee,mebee,mebee";
$str2 = "mebee,mebee,mebee,mebee,mebee";
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i)
{
preg_split("/[,]/", $str1);
}
result($startTime,'preg_split');
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i)
{
explode(",", $str2);
}
result($startTime,'explode');
function result($time,$str){
echo '測定結果 : ' . $str . PHP_EOL;
// 表示は少数第5桁まで
echo "process time: " . number_format((microtime(true) - $time),5) . ' ミリ秒' . PHP_EOL;
echo PHP_EOL;
}
実行結果
[1回目]
測定結果 : preg_split
process time: 8.69775 ミリ秒
測定結果 : explode
process time: 4.11711 ミリ秒
[2回目]
測定結果 : preg_split
process time: 8.61811 ミリ秒
測定結果 : explode
process time: 4.12468 ミリ秒
[3回目]
測定結果 : preg_split
process time: 9.76064 ミリ秒
測定結果 : explode
process time: 4.29192 ミリ秒
explodeの方が、パフォーマンスが良さそうです。
-
前の記事
javascript indexOfを使って文字列が含まれているかを判定する 2021.10.03
-
次の記事
VBA エラー「オブジェクト モジュール内では、パブリックユーザー定義型は定義できません。」が発生した場合の対処法 2021.10.03
コメントを書く