Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > строки и переменные |
Автор: Rtm 16.6.2006, 13:29 | ||||||
объясните разницу, плз, между:
и
|
Автор: skyboy 16.6.2006, 13:33 |
Rtm, выдаёт одинаковый результат. Значит, идентично. Как на меня, правда, то второй вариант нагляднее. Хотя, интуиция подсказывает мне, что в первом случае вызывается чё-то типа inline-подстановки, а во втором - явно вызывается функция с передачей параметров... пойду, протестирую... |
Автор: BobiKK 16.6.2006, 13:37 |
Результат будет один. Конструкция "hello $variable" выполнится немного быстрее. Однако, конструкции типа "hello trim($variable)" - недопустимы. В то время как "hello".trim($variable) - нормально Кроме того, могут возникнуть проблемы с ипользованием ассоциативных массивов. Т.е., "hello $array['first']" может иногда приводить к ошибкам. |
Автор: Mal Hack 16.6.2006, 13:44 |
И где тут функция есть? Да???? Вот интерпретатор получает на вход строку, начинает ее парсить. Быстрее будет работать вариант с точками. Второй вариант, когда переменная указывается внутри строки и в {}, третий - просто $var... |
Автор: skyboy 16.6.2006, 13:50 | ||||||||||
Этот код был прогнан через профайлер, который в аттаче. Вот результат:
"Concat"- это я так назвал явный вариант с точками, а "inline" - вариант с внесением переменной внутрь строки. Потом я подмал,что причина может быть в порядке вычислений и поменял местами варианты. Правда, результат мало изменился:
Потом я подумал, и увеличил счётчик до 100000.
Разница исчезла. Видимо, это была какая-то лажа, с подсчётом. Или же... Нет предела идиотизму ![]()
Причём результат устойчивый ![]() ![]() |
Автор: BobiKK 16.6.2006, 14:05 | ||
First: 0.0955958366394 Second: 0.0795040130615 Third: 0.0952532291412 Признаю, фигню сказал ![]() |
Автор: Mal Hack 16.6.2006, 14:05 |
skyboy, Неправильный у тебя тест. Делали мы уже где-то подобное. Тестировать надо в трех разных файлах, только тогда у тебя может быть реальное полоджение дел. Плюс, выкинуть y из цикла. |
Автор: Guedda 16.6.2006, 16:27 | ||||||
Точки ставятся чисто для удобства. Чтобы можно было потом код разобрать. Моё ИМХО. И ещё, если нечаянно ошибешься, и вместо этого:
напишешь:
то на экране появится:
Вот и всё отличие, я думаю... |
Автор: Mal Hack 16.6.2006, 16:40 |
Я выше описал отличия... А вообще отличия кроются в понимании смысла того, что есть "литерал". PHP, к сожалению, очень много "прощает" пользователям... |
Автор: skyboy 17.6.2006, 18:43 |
Mal Hack, разве цикл не даёт усреднение результатов? Ок. Протестирую в разных файлах. А нельзя ваши тесты где-нить глянуть? |
Автор: Rtm 19.6.2006, 07:52 |
так какой же вывод ? |
Автор: Mal Hack 19.6.2006, 08:09 |
Через точки. |
Автор: Штык 19.6.2006, 09:51 |
хммм..на мой взгляд вариант с точками более читаем в коде..и это плюс) |
Автор: Kefir 19.6.2006, 10:19 |
точки. читабельнее, и, всё-таки, быстрее. где-то была подобная тема уже. и там тестировали. |
Автор: vasac 19.6.2006, 10:36 | ||
А с единичными кавычками еще быстрее, потому что строки разбираться не будут.
А вообще — http://php.spb.ru/php/speed.html |
Автор: skyboy 20.6.2006, 13:53 | ||
vasac, спасибо за инфо ![]() ![]()
Откуда у студента колбаса? ![]() |