不思議なんだけど。これでより良いパフォーマンスがありますか?
$value = preg_replace( array('/_{1,}/', '/-{2,}/'), array('_', '-'), $value);
これより:
$value = preg_replace('/_{1,}/', '_', $value);
$value = preg_replace('/-{2,}/', '-', $value);
これは非常に単純な例です。
不思議なんだけど。これでより良いパフォーマンスがありますか?
$value = preg_replace( array('/_{1,}/', '/-{2,}/'), array('_', '-'), $value);
これより:
$value = preg_replace('/_{1,}/', '_', $value);
$value = preg_replace('/-{2,}/', '-', $value);
これは非常に単純な例です。
私のテストコードとして:
$value = 'dfkjgnnfdjgnjnfdkgn dnf gnjknkxvjn jkngjsrgn';
$value1 = 'dfkjgnnfdjgnjnfdkgn dnf gnjknkxvjn jkngjsrgn';
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++)
$value = preg_replace( array('/_{1,}/', '/-{2,}/'), array('_', '-'), $value);
echo microtime(true) - $start.'<br>';
$start1 = microtime(true);
for ($i = 0; $i < 1000000; $i++){
$value1 = preg_replace('/_{1,}/', '_', $value1);
$value1 = preg_replace('/-{2,}/', '-', $value1);
}
echo microtime(true) - $start1;
1.4254899024963
1.2811040878296
PLB がコメントで言及した microtime() テスト メソッドを使用すると、約 0.3 秒のパフォーマンスの差が見られます。2番目の例は「より速い」です。
呼び出しに従うために、置換が何かを行う非常に短い例を作成しました。
$value = '1_2__3___4____5_____6______1-2--3---4----5-----6------';
$s_1 = microtime(true);
for ($i = 0; $i < 1000000; ++$i) {
$r_1 = preg_replace( array('/_{2,}/', '/-{2,}/'), array('_', '-'), $value);
}
$e_1 = microtime(true);
$s_2 = microtime(true);
for ($i = 0; $i < 1000000; ++$i) {
$r_2 = preg_replace('/_{2,}/', '_', $value);
$r_2 = preg_replace('/-{2,}/', '-', $r_2);
}
$e_2 = microtime(true);
print $r_1;
print $r_2;
print $e_1 - $s_1;
print $e_2 - $s_2;
この結果:
3.69554805756
3.2879319191
予想どおり、100 万回の通話について話しているので、大きな違いはありません。実際にはまったく違いはありません。また、2 番目のバージョンが「わずかに」高速であることも興味深い点です。それらの配列を作成して実行しているためだと思います。
興味深いことに、私は 2 つのスクリプトを実行しましたが、私の場合は配列を使用した方が高速でした。
最初のテスト
2.0891699790955
2.2491400241852
2回目のテスト
3.2192239761353
3.4498269557953
システム
PHP: 5.4.9
OS: Ubuntu x64
CPU: i7-3630QM