[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тест влияния кавычек на производительность
EvilDev
Сегодня тест сделал

$start = microtime(true);

while ($i < 1000000) {
$t="text {$text} text {$text} text {$text}";
++
$i;
}

$test[0] = round(microtime(true) - $start, 6);
$start = microtime(true);

while ($i < 1000000) {
$t="text ";$x.=$text;$x="text ";$x.=$text;$x="text ";$x.=$text;
++
$i;
}

$test[1] = round(microtime(true) - $start, 6);
$start = microtime(true);

while ($i < 1000000) {
$t="text ".$text." text ".$text." text ".$text;
++
$i;
}

$test[2] = round(microtime(true) - $start, 6);
$start = microtime(true);

while ($i < 1000000) {
$t='text '.$text.' text '.$text.' text '.$text;
++
$i;
}

$test[3] = round(microtime(true) - $start, 6);


Результаты:
array(4) {
[0]=>
float(6.273794)
[1]=>
float(2.0E-6)
[2]=>
float(2.0E-6)
[3]=>
float(1.0E-6)
}



Спустя 16 минут, 18 секунд (22.03.2012 - 08:03) Visman написал(а):
А где изначальное задание переменной $text?
И вот эта строка
	$t="text ";$x.=$text;$x="text ";$x.=$text;$x="text ";$x.=$text;

ни как у меня не вяжется с остальными тремя вариантами.

Спустя 6 минут, 12 секунд (22.03.2012 - 08:09) EvilDev написал(а):
Visman
Зачем тебе изначальное значение?

>> ни как у меня не вяжется с остальными тремя вариантами.
Почему?

Спустя 3 минуты, 36 секунд (22.03.2012 - 08:13) Visman написал(а):
Цитата (EvilDev @ 22.03.2012 - 13:09)
Почему?

Вот
$t="text ";
$x.=$text;
$x="text ";
$x.=$text;
$x="text ";
$x.=$text;

Спустя 2 минуты, 30 секунд (22.03.2012 - 08:15) Visman написал(а):
Цитата (EvilDev @ 22.03.2012 - 13:09)
Зачем тебе изначальное значение?

Как зачем? Иначе 1000000 раз ошибки выскакивают в логе!

Спустя 3 минуты, 6 секунд (22.03.2012 - 08:18) inpost написал(а):
EvilDev
Если говорить о выводе, то ?>text<?php - самый быстрый.
Если говорим о реальных серверах, то важное замечание:
.$text. БЫСТРЕЕ РАБОТАЕТ в 10 раз, чем . $text .
П.С. это я о пробелах smile.gif

Спустя 1 минута, 48 секунд (22.03.2012 - 08:20) EvilDev написал(а):
inpost
Имеешь ввиду пробелы?

Спустя 1 минута, 52 секунды (22.03.2012 - 08:22) inpost написал(а):
П.С. я выше дописал о пробелах smile.gif

А одинарные кавычки не парсятся регулярками на содержание внутри данных, вроде переменных, в отличии от двойных. В этом же и есть разница. Но для \n\r мы используем уже двойные.
Тут вопрос, использовать сразу двойные везде, или одинарные, а где перенос - конкатенацию строк и двойные... или в переменной хранить вообще.

Спустя 2 минуты, 56 секунд (22.03.2012 - 08:25) EvilDev написал(а):
inpost
По сути тогда получается, что одинарные должны работать быстрее

Спустя 2 минуты, 25 секунд (22.03.2012 - 08:27) inpost написал(а):
странно, я никогда эту сокращенную запись не понимал в виде 1.0Е или 2.0Е.
Если в милисекунды перевести, просто цикл сделай в 100 раз больше, вместо 1 млн - 100 млн. Получишь в секундах smile.gif
Когда у себя замерял, то одинарные как раз и были быстрее.

Спустя 6 минут, 15 секунд (22.03.2012 - 08:34) Visman написал(а):
Быстрый самый последний.
Там 0.000001, а первом 0.906221

Спустя 25 минут, 47 секунд (22.03.2012 - 09:00) twin написал(а):
Цитата (inpost @ 22.03.2012 - 05:18)
Если говорим о реальных серверах, то важное замечание:
.$text. БЫСТРЕЕ РАБОТАЕТ в 10 раз, чем . $text .
П.С. это я о пробелах smile.gif

Никогда никому больше такой ерунды не говори.
Интерпретатор перед тем, как отдать код на компилляцию, очищает его от пробелов, переносов строк и комментариев. Никогда стиль кодирования на скорость исполнения не влиял.

Спустя 2 часа, 27 минут, 8 секунд (22.03.2012 - 11:27) glock18 написал(а):
Цитата (inpost @ 22.03.2012 - 05:22)
А одинарные кавычки не парсятся регулярками на содержание внутри данных, вроде переменных, в отличии от двойных.


такую ерунду тоже говорить не надо

Спустя 14 минут, 56 секунд (22.03.2012 - 11:42) Nikitian написал(а):
В этом "тесте" результаты таковы, т.к. отработал реально только первый цикл. Обнулять надо $i после каждого цикла. А по факту, глупости всё это. Пишите так, как удобнее воспринимать вам, а пользователям пофиг ваша экономия на спичках.

Спустя 15 минут, 47 секунд (22.03.2012 - 11:57) Игорь_Vasinsky написал(а):
о как.... а то..пробелы, пробелы...

Спустя 1 час, 40 минут, 35 секунд (22.03.2012 - 13:38) EvilDev написал(а):
Nikitian
Чет совсем уже у меня крыша едет %)

Вот результаты
array(4) { [0]=> float(7.532885) [1]=> float(7.832545) [2]=> float(7.318763) [3]=> float(7.24623) }

Спустя 18 минут, 15 секунд (22.03.2012 - 13:56) twin написал(а):
Ерундой не занимайтесь. Никакой ощутимой разницы нет, в двойных кавычках писать переменные или конкатенацией. Она настолько ничтожна, что её запросто перекрывают такие вещи как загруженность процессора, температура и пр. Писать нужно так, чтобы было читабельно и удобно. Остальное все от лукавого. Кто не верит: вот, поклацайте.

Спустя 1 час, 4 минуты, 3 секунды (22.03.2012 - 15:00) Michael написал(а):
Цитата (EvilDev @ 22.03.2012 - 12:38)
Nikitian
Чет совсем уже у меня крыша едет %)

Может из-за большой нагрузки по:
Цитата
созданию с нуля сайтов любой сложности

laugh.gif


Спустя 3 часа, 23 минуты, 14 секунд (22.03.2012 - 18:23) vital написал(а):
На хабре было. Куда развернутее и интереснее, кому интересно погуглите.

Спустя 1 час, 25 минут, 35 секунд (22.03.2012 - 19:49) inpost написал(а):
twin
Я уже показывал. Очень жаль, что некоторые люди слушали и пропустили мимо ушей.
Тесты проводились на 10 серверах на разных хостингах. Запусти и сам проверь, из 10 - 8 показали, что пробелы кушают очень много ресурсов, и printf стал быстрее.

glock18
Ну а каким образом обрабатывается на уровне C такая запись: echo "text $var text"; ? Если не стандартной регуляркой на замену? Интересно узнать, если ты такой умный и знаешь...

Спустя 3 минуты, 34 секунды (22.03.2012 - 19:53) Visman написал(а):
Вот какую я статейку давно читал (кое как нашел)
http://php.spb.ru/php/speed.html

Спустя 13 минут, 41 секунда (22.03.2012 - 20:06) twin написал(а):
Цитата (inpost @ 22.03.2012 - 16:49)
twin
Я уже показывал. Очень жаль, что некоторые люди слушали и пропустили мимо ушей.
Тесты проводились на 10 серверах на разных хостингах. Запусти и сам проверь, из 10 - 8 показали, что пробелы кушают очень много ресурсов, и printf стал быстрее.

Хреновые значит тесты. Или сервера. Свои сервера я тестил - на всех картина одинаковая. Да и просто зная устройство PHP не нужно никаких тестов. Это все ерунда.

Покажи мне хоть один такой, где пробелы увеличивают время в 10 раз. Очень жаль, что ты собственные ошибки выдаешь за чистую монету. Осторожнее надо, люди же верят.

ГЗВ Ссылку ты наверное просмотрел.

Спустя 1 минута, 34 секунды (22.03.2012 - 20:08) Игорь_Vasinsky написал(а):
Цитата
Осторожнее надо, люди же верят.

user posted image

Спустя 4 минуты, 13 секунд (22.03.2012 - 20:12) redreem написал(а):
вообще универсальное правило можно просто сформулировать:

"если парсер транслятора позволяет разные варианты написания, нужно использовать только ту, которая однозначно и принудительно сообщает ему о типе лексемы"

остальное все холивар.

Спустя 9 минут, 56 секунд (22.03.2012 - 20:22) inpost написал(а):
twin
0.282049179077 - echo (with space)
0.115871429443 - echo2 (without space)
0.113964080811 - echo3 (without space)
0.143051147461 - echo4 (with mass space + \t)
0.155925750732 - printf
0.109910964966 - print
0.110864639282 - print (without space)
0.082851720112 - <?php echo $var; ?>


Я код проверил, нет там ошибок.

Спустя 48 секунд (22.03.2012 - 20:23) glock18 написал(а):
Цитата (inpost @ 22.03.2012 - 16:49)
twin
Я уже показывал. Очень жаль, что некоторые люди слушали и пропустили мимо ушей.
Тесты проводились на 10 серверах на разных хостингах. Запусти и сам проверь, из 10 - 8 показали, что пробелы кушают очень много ресурсов, и printf стал быстрее.

glock18
Ну а каким образом обрабатывается на уровне C такая запись: echo "text $var text"; ? Если не стандартной регуляркой на замену? Интересно узнать, если ты такой умный и знаешь...

ой, ну не мори меня хохотом, пожалуйста laugh.gif laugh.gif Умру ведь со смеху

Смешно видеть подобные рассуждения от человека, судя по всему C в глаза не видевшего.

Все элементарно, регулярки (это вообще механизм очень тяжелый для того, чтобы использовать его в таких программах - использовались бы регулярки в MacOS и вместо шустрой системы у тебя было бы постоянно тормозящее убожество) там не используются 100% )) Это говорю тебе я, человек написавший на C свой компилятор (по своим языковым правилам, похожий на C) в ассемблер, и в свое время эту тему хорошо изучивший.

Если бы я к тебе относился чуточку иначе, чем отношусь, то, вероятно, даже объяснил бы вкратце. А если бы хорошо относился, то даже теорию компиляторов в памяти восстановить попробовал бы, и рассказать.

PS: про пробелы это супер wink.gif жги есчо, товарыщь. Не, вообще говоря, то что без пробелов работать будет быстрее - правда. Но слышать это от человека, использующего регулярки для парсинга строки... laugh.gif laugh.gif biggrin.gif biggrin.gif

Спустя 3 минуты, 30 секунд (22.03.2012 - 20:26) inpost написал(а):
twin
К тому же ты явно не учел тот факт, что интерпретатор кеширует вывод переменной, когда повторный echo одной и той же переменной уже будет быстрее работать первого echo её же. Что есть немаловажный факт для тестирований.

glock18
Типичный ТРО-ЛО-ЛО. Ответа нет, зато есть фразы:
- Я крутой, а ты гомно.
- Я тебя не уважаю.
- Хотел бы - написал бы, но я не хочу.
- + подонкафский.

Конечно, сразу видно, что ты "шаришь" в данном вопросе, ага smile.gif

Спустя 39 секунд (22.03.2012 - 20:27) glock18 написал(а):
Да, точно, чтобы люди не поняли меня неправильно. Один пробел сэкономит, ну скажем, 3-4 такта процессорного времени. если не ошибаюсь, то деление занимает то ли 64, то ли 128 тактов (могу ошибаться, не помню уже точно). inpost, ты еще не оптимизировал все возможные операции деления/умножения на побитовые сдвиги? laugh.gif laugh.gif Вперед, у тебя еще целый фронт работ по оптимизации, можешь начинать это делать сразу после того, как пробелы почистишь.

Спустя 4 минуты, 23 секунды (22.03.2012 - 20:31) inpost написал(а):
Сначала на мою фразу, что пробел будет медленнее - начинают какашками кидаться, а тут уже подтверждение, что это экономит 3-4 такта... О БОЖЕ, с кем я общаюсь, при этом 2 варианта:
- Ты дурак, ты делаешь не правильно
- Ты дурак, потому что ты говоришь правильно, но только дибилы на это обращают внимание.

smile.gif

Спустя 3 минуты, 26 секунд (22.03.2012 - 20:35) glock18 написал(а):
Цитата (inpost @ 22.03.2012 - 17:31)
Сначала на мою фразу, что пробел будет медленнее - начинают какашками кидаться, а тут уже подтверждение, что это экономит 3-4 такта... О БОЖЕ, с кем я общаюсь, при этом 2 варианта:
- Ты дурак, ты делаешь не правильно
- Ты дурак, потому что ты говоришь правильно, но только дибилы на это обращают внимание.

smile.gif

ты забыл еще третий вариант, который все бы тебе объяснил ))) Судя по всему, тебе еще нужно погуглить сколько это "3-4 такта"


Ну да ладно, я как бы просто поржать сюда зашел. Поржал, теперь отдохну пойду, жалко правда, что кто-то может твои слова всерьез по незнанию воспринять.

Спустя 56 секунд (22.03.2012 - 20:36) twin написал(а):
Цитата (inpost @ 22.03.2012 - 17:26)
twin
К тому же ты явно не учел тот факт, что интерпретатор кеширует вывод переменной, когда повторный echo одной и той же переменной уже будет быстрее работать первого echo её же. Что есть немаловажный факт для тестирований.

Я не понял, причем тут echo? Речь шла о пробелах.
Цитата
.$text. БЫСТРЕЕ РАБОТАЕТ в 10 раз, чем . $text .

Коню понятно, что с пробелами будет медленнее. Даже просто потому, что нужно больше памяти. Но это чистая теория, так как скрипт никогда не работает одинаково. И вся эта экономия на несколько раз съедается разбросом. Тестами ты её ну никак, эту разницу, не выловишь. Только теоретически. Ну а заявлять о разнице в 10(!) раз вообще как минимум опрометчиво.

Спустя 3 минуты, 41 секунда (22.03.2012 - 20:39) inpost написал(а):
Обычно темы люди создают с надеждой получить советы.
Но некоторые заходят "просто поржать" и потроллить.

Спустя 6 минут, 26 секунд (22.03.2012 - 20:46) inpost написал(а):
twin
Может в 10 раз загнул, разница сейчас где-то на 10-30%, что является незначительным.
Понятное дело, что над такими мелочами нет смысла даже париться, даже тот же printf никогда не завалит систему, потому что его физически не хватит этого сделать, хотя он и самый медленный из представленных.
Ранее проводил тесты, так вот разница в 2-3 раз достигала тем, что echo с пробелами стоял первым, в связи с этим первый раз кушал переменные, а далее из буфера, так вот первый и был медленным на столько.

Пробелы проверить можно либо на присвоении, либо на выводе, либо на других операциях. echo был выбран как один из кандидатов для проведения тестов.

Спустя 4 минуты, 50 секунд (22.03.2012 - 20:51) twin написал(а):
Нет там никаких 10-30%. Нет и быть не может. Повторяю еще раз, это разброс времени исполнения скрипта. Тебе просто не повезло в тестах, либо ты провел их недостаточно много.

Пробелы, переносы строк (кстати, я видел ты отругал кого-то за них в конкурсе) и комментарии никогда не создадут видимой разницы исполнения скрипта. Ну если конечно не напихать 10 метров одних пробелов.

Спустя 39 минут, 10 секунд (22.03.2012 - 21:30) zeromind написал(а):
вы уже зажрались с тестами))
если и скорость и повлияет из-за пробелов то только на чтение файла, т.к. стал больше, на производительность думаю это не скажится)

смысл вообще тестировать такую ерунду? вы на этом максимум выйграете тысячные доли секунды же..

Спустя 8 минут, 34 секунды (22.03.2012 - 21:38) Игорь_Vasinsky написал(а):
how is winner ??? ph34r.gif

Спустя 1 минута, 18 секунд (22.03.2012 - 21:40) twin написал(а):
Это вопрос принципиальный. Дело в том, что если бы действительно разница была бы ощутимой, то тогда стоило бы подумать насчет изменения или выбора стиля кодирования. А так люди послушают и начнут лепить кашу-малашу, отсылая к авторитетному источнику. Мол экономия.

Кстати, я вспомнил еще про одну штуку. Про header и путь с протоколом. Я в той теме тоже поторопился согласиться. На самом деле я был прав, просто нужно было до конца разобраться. Нужно найти тему и исправить. А то люди читают и верят...

Спустя 1 минута, 25 секунд (22.03.2012 - 21:41) Игорь_Vasinsky написал(а):
ну тогда спрачте топик.

говорить о пробелах, когда тут рядом запросами в цикле БД заваливают... это смешно.

Спустя 43 секунды (22.03.2012 - 21:42) sharki написал(а):
Дайте мне код теста, на работе с 32мя ядрами проверю)

Ps. По мне, так тема маразматична до ужаса... Что если бы об этом говорили на форуме java...

Спустя 11 часов, 25 минут, 14 секунд (23.03.2012 - 09:07) Michael написал(а):
инпост как обычно нацепил рыжий парик, шарик-нос, зрители расселись, он вышел на сцену и ... начал делиться своими думами о программировании.
Рыжий, рыжий, рыжий, а ну ка рассмеши laugh.gif laugh.gif laugh.gif

То в 10 раз медленнее, то уже в 1.3, как будто это сравнимые вещи...


_____________
HTML5, CSS3, jQuery, Node.js, PHP, Yii, Joomla, MySQL, MongoDb, GIMP
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.