ホームページ >php教程 >php手册 >PHP収集速度調査まとめ(オリジナル)

PHP収集速度調査まとめ(オリジナル)

WBOY
WBOYオリジナル
2016-06-13 12:29:40856ブラウズ


注: 以下のすべての関数は正規表現を使用しません。

上記は、同じ目的を達成する最初の一致を抽出する 3 つの関数です

function str_cut($str,$start, $end) {//最初の一致を抽出し、効率を高めます最も高いもの、最初に分割してから置換
$content = strstr( $str, $start );
$content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $ start ) );
return $content;
}
function str_cut1($str,$start, $end) {//最初の一致を取得し、直接検索して置換します
$x = strpos($str, $start);
return substr($str, $x strlen($start), strpos($str, $end)-$x strlen($end)); 🎜>
function str_cut3($content,$start,$end){//最初の一致を取得する文字列が大きいほど遅くなります。
$my =explode($start,$content);
$my =explode($end,$my[1]);
return $my[0];
以下は、同じ収集目的を達成するために 3 つの一致する関数 (すべてオリジナル) を抽出するものです


function strcut($str,$start, $end) //最初に数値を検索します。中速
{
if( strpos( $str , $start ) )
{
$sum = substr_count($str,$start);

$carr = array( );
for($i=0;$i $str = strstr($start));
$carr[] = substr($str, 0, strpos($str, $end));
🎜> return $carr;

関数 str_cut_all($str,$start, $end,$carr) =array()) //再帰、実行効率が最も遅い!
{
if( strpos( $str, $start) )
{
$str = strstr( $str, $start);
$str = substr( $str, strlen( $ Start);
$ Carr [] = Substr ($ Str, 0, Strpos ($ Str, $ End));
If (STRPOS ($ Str, $ Start)) > return str_cut_all($str, $start, $end,$carr);
my_Ca($content ,$start,$end){// 1 回だけ読み取られるため、すべての一致を取得します。文字列が大きいほど、より明確になります。それは
$m =explode($start,$content);
$a = array ();
for( $i = 1;$i {
$my =explode($end,$m[$i]);
$a[] = $my[0]
unset($my);
return $a;
}

my-Ca の比較に注意してください
次のように書くと、

function my_Ca($content,$start,$end){ //すべての一致を取得します
$m =explode($start,$content);
$sum = count($m); 1;$i {
$my =explode($end ,$m[$i]);
$a[] = $my[0]; 🎜>unset($my);
}
return $a;
}

また速度が速くなりました!


上記からわかるように、配列処理関数 (explode) が文字列処理関数 (substr など) より遅いわけでも、これより速いわけでもありません。複数のデータを照合する場合、配列関数が大きいほど、文字列の処理の利点が大きくなります。 Cut メソッド (str_cut) を使用して単一の文字列を一致させると、同じ効果が得られます。鍵はやはりアルゴリズムにあります!アルゴリズムはよく書かれており、すべての関数は同じです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。