@kofon
Я человек

PHP. Строки или массивы быстрее?

Я уже очень долго думаю, что лучше использовать.
В PHP ведь нет StringBuffer или StringBuilder как в Java/C#.

Так что же быстрее:
$array = array();
$array[] = 'First ';
$array[] = 'Second ';
$array[] = 'Three';
// в конце implode

// или

$str = '';
$str .= 'First ';
$str .= 'Second ';
$str .= 'Three';


Конкатенация, вроде медленная операция во всех ЯП (и в PHP).
Ведь строки - неизменяемый объект.
Но создание новой ячейке в массиве тоже не дешёвая операция, т. к. массив в PHP ассоциативный!

Так что же лучше???
  • Вопрос задан
  • 793 просмотра
Решения вопроса 3
DevMan
@DevMan
лучше забить: разница будет заметна с наносекундомером.
Ответ написан
65536
@65536
что мешает спросить у интерпретатора пхп?

$start = microtime(1);

for ( $i = 0; $i < 1000000; $i++ )
{
    $array = array();
    $array[] = 'First ';
    $array[] = 'Second ';
    $array[] = 'Three';
}

print microtime(1) - $start;

$start = microtime(1);

for ( $i = 0; $i < 1000000; $i++ )
{
    $str = '';
    $str .= 'First ';
    $str .= 'Second ';
    $str .= 'Three';
}

print microtime(1) - $start;
Ответ написан
Комментировать
@kofon Автор вопроса
Я человек
65536 Спасибо!
Думаю вопрос закрыт. Странно, что я сам не додумался...
Ответ: Строки быстрее!

PHP 4 очень колеблется, то [20, 30] то [30, 60]

2c8424c7f41848f480ffff9012c8b6c2.PNG

Теперь перенёс создание и инициализацию перед for.
Разница иногда есть, верхняя цифра (массив) иногда медленнее (в 1/10 случаев).
Вот такая фотка (может совпадение)
480574e37e3d4f0c95264bf7e0250d81.PNG



PHP 5.5 более менее однозначен. Разницы если вынести поверх for - нет, просто поверьте. Зато он в 10 раз быстрее (100 000 итераций (в 4-ом не смог столько же написать из-за получения минусовых значений от задержки))

2f121c4f46bb44b0ab2d921bc346ae3a.PNG
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы