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。鍵はやはりアルゴリズムです。アルゴリズムが上手です。どの関数も同じです。