なぜか質問を投稿すると反映されない。。 何かしら問題があってはじかれている??
PHPで文字列の先頭マッチするかを最速で調べる
ある文字列の先頭にある文字列が存在するかを調べるのを検証してみた
DEMO
結果の一例
strpos 0.0026760101318359 ms substr 0.18771910667419 ms preg_match 0.4143500328064 ms substr_compare 0.18669390678406 ms strncmp 0.16538405418396 ms
やはりstrposですね
DEMOの内容
$len = strlen($_REQUEST['needle']);
function benchFunc($benchName, callable $fn){
echo "{$benchName}<br>\n";
$begin = microtime(true);
for($i=0; $i<LOOP; $i++) $fn();
echo microtime(time) - $begin . " ms<br>\n";
};
benchFunc('strpos', function(){
0 === strpos($_REQUEST['haystack'], $_REQUEST['needle']);
});
benchFunc('substr', function(){
$_REQUEST['needle'] === substr($_REQUEST['haystack'], 0, $len);
});
benchFunc('preg_match', function(){
preg_match('/^' . $_REQUEST['needle'] . '/', $_REQUEST['haystack']);
});
benchFunc('substr_compare', function(){
0 === substr_compare($_REQUEST['haystack'], $_REQUEST['needle'], 0, $len);
});
benchFunc('strncmp', function(){
0 === strncmp($_REQUEST['haystack'], $_REQUEST['needle'], $len);
});
検索

コメントを残す