php 配列をマージできる「array_merge」と「+」演算子のパフォーマンスを計測する
phpで、配列をマージできる「array_merge」と「+」演算子のパフォーマンスを計測するサンプルコードを記述してます。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; // 処理にかかった時間(ミリ秒)
以下は、配列をマージできる「array_merge」と「+」演算子のパフォーマンスを計測するサンプルコードとなります。
※「array_merge」と「+」演算子が同じ結果になるのは、それぞれのキーに同じものがない場合のみです。
<?php
// 100万回実行
define('COUNT', 1000000);
$arr1 = ["aaa" => 1, "bbb" => 2, "ccc" => 3];
$arr2 = ["ddd" => 4, "eee" => 5, "fff" => 6];
// 計測開始
$startTime = microtime(true);
$result=[];
for ($i = 0; $i < COUNT; ++$i)
{
$result = $arr1 + $arr2;
}
result($startTime,'+');
// 計測開始
$startTime = microtime(true);
$result=[];
for ($i = 0; $i < COUNT; ++$i)
{
$result = array_merge($arr1,$arr2);
}
result($startTime,'array_merge');
function result($time,$str){
echo '測定結果 : ' . $str . PHP_EOL;
// 表示は少数第5桁まで
echo "process time: " . number_format((microtime(true) - $time),5) . ' ミリ秒' . PHP_EOL;
echo PHP_EOL;
}
実行結果
[1回目]
測定結果 : +
process time: 0.01415 ミリ秒
測定結果 : array_merge
process time: 0.03530 ミリ秒
[2回目]
測定結果 : +
process time: 0.01414 ミリ秒
測定結果 : array_merge
process time: 0.03312 ミリ秒
[3回目]
測定結果 : +
process time: 0.14007 ミリ秒
測定結果 : array_merge
process time: 0.39760 ミリ秒
「+」演算子の方が倍近く、パフォーマンスが良さそうです。
-
前の記事
javascript lodashを使って配列を結合する 2021.07.03
-
次の記事
node.js PostgreSQLにトランザクションを持たせてクエリを実行する 2021.07.03
コメントを書く