PHP:多个Concat还是一个内爆?

PHP:多个Concat还是一个内爆?,php,arrays,performance,string,Php,Arrays,Performance,String,在我当前的项目中,我将一个字符串组装成许多小字符串(直接输出不是一个选项)。进行多个字符串连接是否更有效?或者我应该将这些部分添加到数组中并使其内爆 与网络流量、数据库、文件、图形等相比,优化很少。不过,这里是sitepoint关于该主题的参考资料 哪个最快 好消息是PHP5速度很快。我 测试了5.3版,您的表现更出色 可能比内存不足 体验性能问题。 然而,数组内爆方法 通常需要两倍于 标准连接运算符。A. 需要相当的时间 连接字符串或生成 数组,但是内爆函数 加倍努力 毫不奇怪,PHP是针对

在我当前的项目中,我将一个字符串组装成许多小字符串(直接输出不是一个选项)。进行多个字符串连接是否更有效?或者我应该将这些部分添加到数组中并使其内爆

与网络流量、数据库、文件、图形等相比,优化很少。不过,这里是sitepoint关于该主题的参考资料

哪个最快

好消息是PHP5速度很快。我 测试了5.3版,您的表现更出色 可能比内存不足 体验性能问题。 然而,数组内爆方法 通常需要两倍于 标准连接运算符。A. 需要相当的时间 连接字符串或生成 数组,但是内爆函数 加倍努力

毫不奇怪,PHP是针对 字符串处理和点运算符 将是最快的连接 方法在大多数情况下


首先是一个旁注——在实际的生产应用程序中,这一切都无关紧要,因为时间差是肤浅的,应用程序的优化应该在其他地方进行(处理网络、数据库、文件系统等)。尽管如此,出于好奇:


内爆
可能是更有效的串联,但前提是您已经拥有阵列。如果不这样做,它可能会慢一些,因为所有的增益都会被创建数组和分配其元素所需的时间所抵消。因此,请保持简单:)

如果有一个通用的粘接剂(即空格、回车),我通常会内爆。那么为什么用户的粘接剂提供了创建大字符串的工具呢?为什么C#中有StringBuilder?因为如果您处理的是大字符串,那么构建它们的方式就是一个问题。PHP不仅可以用来生成网页!请停止燃烧。优化大字符串的最佳方法是避免使用大字符串。对于通过网络发送并由单个用户查看的网页,所有字符串都应该短。即使它对代码的影响很小,我也知道这一点。没有无用的知识,因为任何能提高你对所用语言理解的东西都对你有好处。请停止燃烧,谢谢。我知道还有其他更重要的问题,但我必须在我的项目中使用这种方法,所以我想我应该询问并找到最有效的方法:)超过200万次迭代:(内爆…1.913秒)(串联…1.130秒)我想如果你做$list[$\uz]=“a”,看看会发生什么会很有趣;这是更快还是更慢,因为如果您使用$list[]php,则必须找出将“a”字符串放在何处。。。糟糕的是,我这里没有一台运行php的计算机。。。
<?php
  function microtime_float()
  {
      list($usec, $sec) = explode(" ", microtime());
      return ((float)$usec + (float)$sec);
  }

  define('ITERATIONS', 10000);
  header('Content-Type: text/plain');

  printf("Starting benchmark, over %d iterations:\r\n\r\n", ITERATIONS);

  print("Imploding...");
  $start = microtime_float();

  $list = Array();
  for ($_ = 0; $_ < ITERATIONS; $_++)
    $list[] = 'a';
  $result = implode('',$list);

  $end = microtime_float() - $start;
  printf("%0.3f seconds\r\n", $end);

  unset($list,$result);

  print("Concatenating...");
  $start = microtime_float();

  $result = '';
  for ($_ = 0; $_ < ITERATIONS; $_++)
    $result .= 'a';

  $end = microtime_float() - $start;
  printf("%0.3f seconds\r\n", $end);
?>
Starting benchmark, over 10000 iterations:

Imploding...0.007 seconds
Concatenating...0.003 seconds