[php] echo , vs echo .

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
rhamdeew
Сообщения: 51
Зарегистрирован: 2012.09.02, 19:59

[php] echo , vs echo .

Сообщение rhamdeew »

Доброго всем вечера!
Не так давно узнал что можно объединять строки через , вместо привычного символа . (видимо просто документацию плохо читал =))
Хотелось бы поинтересоваться у уважаемого сообщества в чем принципиальная разница между этими двумя формами записи и какая из них предпочтительнее/быстрее работает ?
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: [php] echo , vs echo .

Сообщение MetalGuardian »

говорят через , работает быстрее
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: [php] echo , vs echo .

Сообщение Nafania »

Это не объединение строки (конкатенация), а просто echo принимает множество аргументов на входе, которые вы перечисляете через запятую.
http://php.net/manual/ru/function.echo.php
void echo ( string $arg1 [, string $... ] )
Аватара пользователя
rhamdeew
Сообщения: 51
Зарегистрирован: 2012.09.02, 19:59

Re: [php] echo , vs echo .

Сообщение rhamdeew »

Я так понимаю для простого вывода можно просто юзать ,
Хотя проводил замеры производительности - экономия на спичках получается.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: [php] echo , vs echo .

Сообщение lancecoder »

интерпритатору проще скорее всего, то он все вычисляет между точками, так сказать __toString, а то как параметры в функцию. Теоретически быстрее, но не думаю что намного, вот если цепочка длинная тогда может и будет какой проигрыш. имхо чисто логика без доказательств
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: [php] echo , vs echo .

Сообщение yiijeka »

:)
Точка всё таки для меня предпочтительнее, роднее и универсальнее (сказали уже выше, т.к. запятая - "Это не объединение строки (конкатенация)")
и код этот выполнить нельзя:

Код: Выделить всё

$a = $b , '123123', 123
А такой можно:

Код: Выделить всё

$a = $b . '123123' . 123
И как то запятые ассоциируются с массивами. Хоть с echo такое можно делать, но чтобы когда-нибудь эта необходимость возникла - не встречал не в своём , не в чужом коде.

Попробовал выполнить:

Код: Выделить всё

$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

Но я все равно не буду использовать запятую :)
Ответить