0

私は、長い文字列を文字ごとに繰り返し処理し、その部分文字列に対して特定の操作を行います。

ある時点で、小さい文字列を大きい文字列とマージする必要があります。ここでは、どちらがより効果的かわかりません。

  • 次のように反復して文字ごとに単純に追加します

    for(some iteration){
      large_string.=some_character;
    }
    
  • または、最初にこれらの単一文字を小さな一時文字列に追加してから、単一の操作で連結します

    for(some iteration){
      temporary_string.=some_character;
    }
    large_string.=temporary_string;
    
4

2 に答える 2

1

どちらの方法でも、新しい文字列を作成するのに同じ時間がかかります。時差はありません。

于 2013-04-24T07:54:15.490 に答える
1

両方の反復は同じであるため、同じ時間と同じ量のリソースが必要になります。

ただし、入力配列が次の構造の場合:

$array = array('a', 'b', 'c', 'd');

独自の反復と文字列連結を使用するべきではありませんが、次のように使用してくださいimplode

$large_string .= implode('', $array);

これははるかに高速です。入力配列がその構造でない場合でも、このスニペットを使用する方が速いはずです (テストしていません)。

$tmp = array();
foreach($somethings as $something) { // <-- foreach loop is quicker then for loop
    $tmp[] = $something['my_char'];
}
$large_string .= implode('', $tmp);

PHP ネイティブ関数の使用は、同じロジックを自分で実装するよりも常に優れており、迅速です...少なくとも、通常は入力する必要があるためです。

于 2013-04-24T08:36:26.130 に答える