php 最大公約数を求める「作成した関数」と「gmp_gcd」のパフォーマンスを計測する
phpで、最大公約数を求める「作成した関数」と「gmp_gcd」のパフォーマンスを計測するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
実行時間計測
microtimeを使用すれば、処理にかかった時間を計測することが可能です。
$startTime = microtime(true);
// 処理を記述
$time = microtime(true) - $startTime; // 処理にかかった時間(ミリ秒)
以下は、「作成した関数」と「gmp_gcd」を使用して、最大公約数を求めるコードを1000万回実行して、パフォーマンスを計測するサンプルコードとなります。
<?php
// 1000万回実行
define('COUNT', 10000000);
// 計測開始
$startTime = microtime(true);
// 使用する関数
function gcd($a,$b) {
return ($a % $b) ? gcd($b,$a % $b) : $b;
}
for ($i = 0; $i < COUNT; ++$i)
{
$result1 = gcd("15", "55");
}
result($startTime,'作成した関数');
// 計測開始
$startTime = microtime(true);
for ($i = 0; $i < COUNT; ++$i)
{
$result2 = gmp_gcd("15", "55");
}
result($startTime,'gmp_gcd');
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: 14.11432 ミリ秒
測定結果 : gmp_gcd
process time: 7.07463 ミリ秒
[2回目]
測定結果 : 作成した関数
process time: 13.72056 ミリ秒
測定結果 : gmp_gcd
process time: 6.08261 ミリ秒
[3回目]
測定結果 : 作成した関数
process time: 13.63109 ミリ秒
測定結果 : gmp_gcd
process time: 6.41677 ミリ秒
gmp_gcdの方が、かなりパフォーマンスは、いいです。
-
前の記事
javascript lodashを使ってWeakMapオブジェクトであるかを判定する 2021.11.22
-
次の記事
SQL Server 日付や時間分の差分を取得する 2021.11.22
コメントを書く