PGメモ

非エンジニアの記録

PHP高速化 置換の種類

PHPで置換する際に使う関数を「preg_replace」より「strtr」の方が早いそうだ。
やってみた

BIG DATAの中身は67860文字あります。


$c = 100;


for($i=0;$i<10;$i++){
$r = bm('loop_1',$c);
$rary += $r;
$ravg = $rary/$i;
}

echo $ravg;

function bm($fn, $c)
{
$time_start = microtime(true);
$fn($c);
$time_end = microtime(true);
$time = $time_end - $time_start;
return sprintf("%.10f",$time);
}

function loop_1($c){
$f = file_get_contents('BIG DATA');

for($i=0;$i<$c;$i++){
strtr($f, array('in' => 'on', 'an' => 'on', 'In'=>'on', 'ni'=>'on', 'is'=>'on'));
}
}

function loop_2($c){
$f = file_get_contents('BIG DATA');

for($i=0;$i<$c;$i++){
preg_replace('/(in|an|In|ni|is)/','on',$f);
}
}

そして結果は・・・

strtr


1.099047184

preg_replace


2.9997838868

結果:かなり早い

おそらく条件が複雑になればなるほど差が開く。
変更できる部分があればそれだけでパフォーマンスアップできそうです。