В моем текущем проекте я собираю одну строку для многих маленьких строк (прямой вывод НЕ является опцией). Было бы более эффективно выполнять множество конкатенаций строк? или я должен добавить детали в массив и взорвать его?
PHP: много конкатений или один взломан?
Ответ 1
Во-первых, примечание - любое из этого не имеет значения в реальном производственном приложении, поскольку временные различия являются поверхностными, а оптимизация приложения должна выполняться в других местах (с сетью, базой данных, файловой системой и т.д.), Это сказано, ради любопытства:
 implode может быть более эффективным конкатенацией, но только если у вас уже есть массив. Если вы этого не сделаете, это, вероятно, будет медленнее, поскольку весь коэффициент усиления будет компенсирован временем, необходимым для создания массива и выделения его элементов. Так что держите его просто:)
Ответ 2
Оптимизация будет мало по сравнению с сетевым трафиком, базами данных, файлами, графикой и т.д. Однако здесь приведена ссылка на тему с сайта.
http://www.sitepoint.com/high-performance-string-concatenation-in-php/
Что быстрее?
Хорошей новостью является то, что PHP5 работает быстро. я проверенная версия 5.3 и youre гораздо больше скорее всего, закончится память, чем опыт работы. Однако метод развязывания массива обычно занимает в два раза больше стандартный оператор конкатенации. требуется сопоставимый период времени объединить строку или построить массив, но функция implode удваивает усилия.
Неудивительно, что PHP оптимизирован для обработка строк и оператор точки будет самой быстрой конкатенацией метод в большинстве случаев.
Ответ 3
<?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);
?>
приводит к тому, что implode длится дольше 99% времени. например.
Starting benchmark, over 10000 iterations:
Imploding...0.007 seconds
Concatenating...0.003 seconds
