Забьем переменные: Код (Text): $b = 1; $a = 0; Выведем их: Код (Text): echo "b=$b, a=$a"; //вывод b=1, a=0 Код (Text): echo "b=".$b.", a=".$a; // опять же вывод b=1, a=0 Известно, что если привести значение к строке: Код (Text): $b = '1'; $a = '0'; То с обоими вариантами будет тоже самое. Использовать ли конкатенацию в данном случае?
Где-то читал статью об оптимизации php-кода. Там писали, что конкатенацию надо использовать в любом случае - если писать все в " " - это замедляет работу программы на 40% Добавлено спустя 52 секунды: _http://php.spb.ru/php/speed.html
Последнее изменение страницы 17 апреля 2003 г. 19:01:59 xaocbozzz, в приведенном тобой случае - не заморачиваться.
чем больше в " " напихнуто, тем больше будет отличие. Однако удобство весьма велико. Т.е. если у вас страница не весит 200 кб сама по себе без скриптов и цсс, то не стоит морочиться. Разница между 15 мс и 20 мс это 30%. Стоит ли морочиться?
Конечно дело привычки, но мне не удобно ваще ни разу никогда не пользуюсь. но если кому удобно, то если не злоупотреблять - можно и не заморачиваться
Проводил замеры относительно конкатенации: ссылка. Если не в двойных кавычках, то приведённым там способом через ob_start() ... ob_get_clean(), работает быстрее сложной конкатенации. Однако такое использую в глубинах движка и лишь изредка в более насущных кодах: если вместо этого оптимизировать запросы к базе, выигрыш может составить до 1000% по сравнению с конкатенацией за один жизненный цикл страницы (сокращение на 0,000231 сек у конкатенации или сокращение на 0,3 сек у запроса). Примечание: машина мощная, поэтому величины в тесте довольно мизерные. Попробуйте запустить тест у себя и поиграть с количеством итераций. Деление в конце должно осуществляться на число итераций внешнего цикла.
Пара наводящих и один монстр-запрос, на который приходится 0,6 сек из-за особенностей межтабличных связей от прежних разработчиков. Разделил набор пополам, проиндексировал и т.д. -- получилось 0,3. Но это офф-топик. Авось, расскажу как-нибудь.
добавь полей с предварительными данными, наверняка ускорится. давай запрос ковырять, это куда как интереснее. создай темку в разделе про бд
Код (PHP): <?php $a = 'a'; $b = 'b'; $c = 'c'; $d = 'd'; $e = 'e'; $start = microtime(true); for($i = 0; $i < 1000000; ++$i) $str = 'first: ' . $a . ', second: ' . $b . ', third: ' . $c . ', fourth: ' . $d . ', fifth: ' . $e; echo(round(microtime(true) - $start, 7) . ' sec.<br />'); $start = microtime(true); for($i = 0; $i < 1000000; ++$i) $str = "first: " . $a . ", second: " . $b . ", third: " . $c . ", fourth: " . $d . ", fifth: " . $e; echo(round(microtime(true) - $start, 7) . ' sec.<br />'); $start = microtime(true); for($i = 0; $i < 1000000; ++$i) $str = "first: $a, second: $b, third: $c, fourth: $d, fifth: $e"; echo(round(microtime(true) - $start, 7) . ' sec.<br />'); $start = microtime(true); for($i = 0; $i < 1000000; ++$i) $str = "first: {$a}, second: {$b}, third: {$c}, fourth: {$d}, fifth: {$e}"; echo(round(microtime(true) - $start, 7) . ' sec.'); ?> Код (Text): 1.9601409 sec. 1.9202620 sec. 1.4336561 sec. 1.4673231 sec. Вывод: самое быстрое Код (PHP): $str = "first: $a, second: $b, third: $c, fourth: $d, fifth: $e";
в больших проектах на вывод практически обязательно используется какой-то "шаблонизатор". а он работает НА ПОРЯДОК медленнее — это плата за удобство. не стоит заморачиваться микрооптимизацией.
Возможность вписать массив. Код (PHP): echo "$a[10] vs {$a[10]} вот"; Добавлено спустя 34 секунды:Смени аватарку, не позорься =)
Ничего не понял. Код (Text): $choto[0] = "0"; $choto[1] = "1"; echo "$chtoto[0] vs {$chtoto[1]} вот"; Выводит: Код (Text): vs вот
написали, что для использования массивов и объектов. а в твоем примере "не работает", потому что ты по-разному написал в присваивании и в строке.