【PHP高速化】文字列はpreg_split()で分解する

explode()、split()よりもpreg_split()の方が速い。

split()は非推奨関数にもなっている。
<?php
// 取得時間初期化
$getTime = array();

// ループ単体の時間計測
$getTime[ 'los' ][ 0 ] = microtime( true );
for ( $i = 0; $i < 10000; ++$i ) {}
$getTime[ 'los' ][ 1 ] = microtime( true );

$tmp = join( ',', range( 1, 10 ) );

// test.1
$getTime[ 't1' ][ 0 ] = microtime( true );
for ( $i = 0; $i < 10000; ++$i ) {
    explode( ',', $tmp );
}
$getTime[ 't1' ][ 1 ] = microtime( true );

// test.2
$getTime[ 't2' ][ 0 ] = microtime( true );
for ( $i = 0; $i < 10000; ++$i ) {
    split( ',', $tmp );
}
$getTime[ 't2' ][ 1 ] = microtime( true );

// test.3
$getTime[ 't3' ][ 0 ] = microtime( true );
for ( $i = 0; $i < 10000; ++$i ) {
    preg_split( '/,/', $tmp );
}
$getTime[ 't3' ][ 1 ] = microtime( true );

// result
$losTime = $getTime[ 'los' ][ 1 ] - $getTime[ 'los' ][ 0 ];
for ( $i = 1; $i <= 3; ++$i ) {
    echo 't'.$i.' result : ';
    echo sprintf( '%.6f', $getTime[ 't'.$i ][ 1 ] - $getTime[ 't'.$i ][ 0 ] - $losTime ) . ' sec <br>';
}
?>

1〜10をカンマで繋いだ文字列を、10000回カンマで分解した処理時間は下記。
t1 result : 0.043697 sec
t2 result : 0.074221 sec
t3 result : 0.033958 sec

name
email
url
comments
   
この記事のトラックバックURL
トラックバック