php 改行をbrタグに変換できる「nl2br」と「str_replace」のパフォーマンスを計測する

  • 作成日 2021.10.20
  • php
php 改行をbrタグに変換できる「nl2br」と「str_replace」のパフォーマンスを計測する

phpで、改行をbrタグに変換できる「nl2br」と「str_replace」のパフォーマンスを計測するサンプルコードを記述してます。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; // 処理にかかった時間(ミリ秒)

以下は、「nl2br」と「str_replace」を使用して改行をbrタグに変換するコードを1000万回実行して、パフォーマンスを計測するサンプルコードとなります。

<?php

// 1000万回実行
define('COUNT', 10000000); 

$str1 =  "mebee" . PHP_EOL . "info" . PHP_EOL;
$str2 =  "mebee" . PHP_EOL . "info" . PHP_EOL;

// 計測開始
$startTime = microtime(true);

for ($i = 0; $i < COUNT; ++$i)
{    
    nl2br($str1);
}

result($startTime,'nl2br');

// 計測開始
$startTime = microtime(true);

for ($i = 0; $i < COUNT; ++$i)
{
    str_replace([PHP_EOL], "<br />". PHP_EOL, $str2);
}

result($startTime,'str_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回目] 
測定結果 : nl2br
process time: 2.82562 ミリ秒

測定結果 : str_replace
process time: 3.84436 ミリ秒

[2回目] 
測定結果 : nl2br
process time: 3.03279 ミリ秒

測定結果 : str_replace
process time: 3.82788 ミリ秒

[3回目] 
測定結果 : nl2br
process time: 2.81884 ミリ秒

測定結果 : str_replace
process time: 3.58920 ミリ秒

nl2brの方が、パフォーマンスが良さそうです。