php採取速度探究まとめ(オリジナル)


以下の関数は全部正則を使っていません。以上は最初のマッチの3つの関数を取り出すために、同じ目的のfunctionを実現します。 strcut($str) ,$start、 $end) {//最初のマッチを取り出して、効率が一番いいです。まず分割してから$contentを換えます。 = str(str) $str $start ); $content = substr( $content streen $start ), ストリップ $content $end ) - streen $start ) ); return $content;機能 strcut 1($str) ,$start、 $end) {//最初のマッチを取り出して、効率の中で直接検索して$xを置換します。 = strupos($str) $startreturn substr($str) $x+streen($start)、 strupos($str) $end)-$x+streen($end);機能 strcut 3($content、$start、$end){/最初のマッチを取り出すと、文字列が大きいほど、速度が遅くなります。my = explode($start、$content);my = explode($end、$my[1]);return $my[0];以下はすべてのマッチングの3つの関数(すべてオリジナル)を取り出し、同じ収集目的のfunctionを実現します。 struct($str) ,$start、 $end) //まず数を探します。速度は中ぐらいです。    if( ストリップ $str , $start ) )     {             $sum = substr.count($str、$start)            $carr = array();            for($i=0;)i<$sum;$i+){                $str = str(str) $str $start );                 $str = substr( $str streen($start)                   $carr[] = substr( $str 0, ストリップ $str $end ) );             }                }     return $carr;機能 strcut_all($str) ,$start、 $end,$carr=array() //再帰的に、運行効率が一番遅いです。{    if( ストリップ $str , $start ) )     {             $str = str(str) $str $start );             $str = substr( $str streen($start)               $carr[] = substr( $str 0, ストリップ $str $end ) );                if( ストリップ $str , $start ) )             {                    return strcut_all($str) ,$start、 $end ,$carr );                }     }     return $carr;機能 my_Ca($content、$start、$end){/全てのマッチを取り出して、一番効率がいいです。一回だけ読むと文字列が大きくなるほど、文字列が大きくなります。    $m = explode($start、$content);    $a. = array();    フォーム( $i = 1;i < count($m)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);a. = array()$sum = count($m)フォーム( $i = 1;i < $sum;i++ ) { $my = explode($end、$m[$i]);a[] = $my[0]unset($my);return $a;速度はまた速くなりました。上から見ると、配列処理関数は文字列処理関数(substrなど)よりも遅く、これよりも速くないです。なぜなら、複数のデータにマッチする時には多くの配列関数の優勢が大きいほど、処理文字列はケーキを切るように小さく切ります。文字列を一つの文字列に合わせて、思考を使って行うのも同じ効果です。cut。鍵はやはりアルゴリズムです。アルゴリズムが上手です。どの関数も同じです。