Доброго всем вечера!
Не так давно узнал что можно объединять строки через , вместо привычного символа . (видимо просто документацию плохо читал =))
Хотелось бы поинтересоваться у уважаемого сообщества в чем принципиальная разница между этими двумя формами записи и какая из них предпочтительнее/быстрее работает ?
[php] echo , vs echo .
- MetalGuardian
- Сообщения: 208
- Зарегистрирован: 2011.03.06, 02:42
- Откуда: Киев
Re: [php] echo , vs echo .
говорят через , работает быстрее
Re: [php] echo , vs echo .
Это не объединение строки (конкатенация), а просто echo принимает множество аргументов на входе, которые вы перечисляете через запятую.
http://php.net/manual/ru/function.echo.php
void echo ( string $arg1 [, string $... ] )
http://php.net/manual/ru/function.echo.php
void echo ( string $arg1 [, string $... ] )
Re: [php] echo , vs echo .
Я так понимаю для простого вывода можно просто юзать ,
Хотя проводил замеры производительности - экономия на спичках получается.
Хотя проводил замеры производительности - экономия на спичках получается.
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: [php] echo , vs echo .
интерпритатору проще скорее всего, то он все вычисляет между точками, так сказать __toString, а то как параметры в функцию. Теоретически быстрее, но не думаю что намного, вот если цепочка длинная тогда может и будет какой проигрыш. имхо чисто логика без доказательств
Re: [php] echo , vs echo .
Точка всё таки для меня предпочтительнее, роднее и универсальнее (сказали уже выше, т.к. запятая - "Это не объединение строки (конкатенация)")
и код этот выполнить нельзя:
Код: Выделить всё
$a = $b , '123123', 123
Код: Выделить всё
$a = $b . '123123' . 123
Попробовал выполнить:
Код: Выделить всё
$string = str_repeat('a', 50);
$mark = microtime(true);
for ($i = 0; $i < 5000; $i++) {
ob_start();
for ($j = 0; $j < 5000; $j++) {
echo $string . $string . $string;
}
ob_get_clean();
}
echo microtime(true) - $mark;
Для точки:
18.0915150642
17.4793720245
17.4169940948
17.5958378315
Для запятой:
16.0205960274
15.9933230877
15.8859939575
Но я все равно не буду использовать запятую