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 回答