» WAP Мастер Форум https://forum.wapinet.ru/index.php » PHP https://forum.wapinet.ru/viewforum.php?id=3 » Тесты производительности https://forum.wapinet.ru/viewtopic.php?id=49 |
Gemorroj » 2008.03.10 15:44 | ||||||||||||||||||||||||||||||||||||||||||||||
Тесты производительности различных часто употребляемых конструкций PHP кода и отдельных функций. Код:
// print $f - закомментированно для более точных результатов тестирования | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.03.22 10:53 | ||||||||||||||||||||||||||||||||||||||||||||||
Код:
Интересный момент, не точная проверка на соответствие, в данном тесте, выполняется столько же, сколько и точная (== и ===). | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.03.22 11:06 | ||||||||||||||||||||||||||||||||||||||||||||||
вот еще интересная инфа, взята из комментариев к CURL функциям на php.net =) | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.03.22 12:03 | ||||||||||||||||||||||||||||||||||||||||||||||
А проверка на пустоту empty()? | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.03.22 12:49 | ||||||||||||||||||||||||||||||||||||||||||||||
да, точно =) не подумал, щас исправлюсь) | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.03.23 09:07 | ||||||||||||||||||||||||||||||||||||||||||||||
Да просто я всегда ей проверяю, хотелось бы быть уверенным в ее использовании. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.04.20 13:25 | ||||||||||||||||||||||||||||||||||||||||||||||
сравнивал mysql_fetch_assoc, mysql_fetch_array и mysql_fetch_row Код:
в таблице users 183 записи, состоит из 22 колонок. Код:
Если с mysql_fetch_row и mysql_fetch_assoc все более-менее понятно (mysql_fetch_row чуть быстрее, т.к. создает нумерованный массив, а не ассоциативный), то почему mysql_fetch_array практически не уступает mysql_fetch_assoc не совсем понятно. Ведь mysql_fetch_array создает целых 2 массива, и как мне казалось должна прилично уступать по скорости. Ан нет. Как это обьяснить без понятия. | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.04.20 21:02 | ||||||||||||||||||||||||||||||||||||||||||||||
там написанно не 2 массива, а массив с двойными индексами. Че это такое меня спрашивать не надо. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.06.23 12:51 | ||||||||||||||||||||||||||||||||||||||||||||||
Теперь Win XP SP3 ;) Код:
воооот... | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.06.24 10:22 | ||||||||||||||||||||||||||||||||||||||||||||||
для 25 тысяч не фатальна 1 секунда | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.06.24 12:53 | ||||||||||||||||||||||||||||||||||||||||||||||
250 тысяч =) | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.06.24 18:18 | ||||||||||||||||||||||||||||||||||||||||||||||
250!!! А собственно нафига они там скобки то... | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.06.24 19:52 | ||||||||||||||||||||||||||||||||||||||||||||||
ну так для меня удобнее. без скобок для меня код становится абсолютно не читабельным. да и сами разработчики PHP рекомендуют использовать скобки везде. а вот на деле со скобками медленне получается код( | ||||||||||||||||||||||||||||||||||||||||||||||
Helqg » 2008.06.24 20:58 | ||||||||||||||||||||||||||||||||||||||||||||||
Кстати про читабельность. Ща прочитал- "Perl был основан на awk sed grep, и других средствах UNIX , и в результате при работе с перл часто получается код только для записи( то есть через несколько месяцов вы его понять не сумеете)." А ты про скобки | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.07.14 04:05 | ||||||||||||||||||||||||||||||||||||||||||||||
извечный спор, что быстрее, print или echo =) Код:
вот такие результаты) | ||||||||||||||||||||||||||||||||||||||||||||||
denich » 2008.07.14 11:09 | ||||||||||||||||||||||||||||||||||||||||||||||
значит echo быстрее) | ||||||||||||||||||||||||||||||||||||||||||||||
AntiKiller » 2008.08.01 00:38 | ||||||||||||||||||||||||||||||||||||||||||||||
Я тут на сайтик наткнулся... Gemorroj, глянь... http://www.phpbench.com , если с инглишом дружишь(я думаю что дружишь ;) ), почитай там... если не дружишь(или кто ещё глянет сайтик не знающий инглиша, перезагрузи страницу которая откроется пару раз...).......... | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2008.08.01 12:10 | ||||||||||||||||||||||||||||||||||||||||||||||
Ага, здорово. Особенно поразило на сколько быстрее код если подсчет кол-ва итераций вынести из цикла. А так же использование функций для работы с массивами array_keys() / array_values() | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.02.28 14:20 | ||||||||||||||||||||||||||||||||||||||||||||||
Кто-то просил потестить скорость работы операторов AND, &&, OR, ||. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.03.01 18:12 | ||||||||||||||||||||||||||||||||||||||||||||||
Код:
Как видно, шустрее всех substr, потом mb_substr и самая медленная iconv_substr | ||||||||||||||||||||||||||||||||||||||||||||||
LONGMAN » 2009.03.10 02:08 | ||||||||||||||||||||||||||||||||||||||||||||||
Интересно было бы сравнить ещё и while, do while, for и foreach | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.03.10 02:22 | ||||||||||||||||||||||||||||||||||||||||||||||
по ссылке в первом посте достаточно много информации на этот счет. http://wapinet.ru/textbook/speed.htm думаю повторяться не стоит. | ||||||||||||||||||||||||||||||||||||||||||||||
LONGMAN » 2009.03.10 02:49 | ||||||||||||||||||||||||||||||||||||||||||||||
Да я знаю эти тесты от Бородина, но интересно будет ещё тесты именно на Windows XP SP3 | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.04.10 19:43 | ||||||||||||||||||||||||||||||||||||||||||||||
Теперь PHP 5.3
а теперь ставим error_reporting(2039);
такое получается из-за забивания буфера ошибками. | ||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.04.12 17:17 | ||||||||||||||||||||||||||||||||||||||||||||||
Я где то читал что при использовании знака @ код работает медленне в 7 раз... Врут?... | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.04.12 17:40 | ||||||||||||||||||||||||||||||||||||||||||||||
я тоже такое читал, поэтому и решил проверить. В случае с file_get_contents выходит врут. | ||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.04.12 18:20 | ||||||||||||||||||||||||||||||||||||||||||||||
А можешь проверить с этим же значком, только истинное утверждение? Возможно в том случае, если не будет никаких ошибок, результаты будут другими? | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.04.19 15:36 | ||||||||||||||||||||||||||||||||||||||||||||||
10.000 проходов
да, действительно, если файл существует, то подавление ошибок с помощью собаки замедляет работу. | ||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.04.19 16:21 | ||||||||||||||||||||||||||||||||||||||||||||||
Примерно 0.3 секунды за 10000 проходов. Не так существенно, как говорят, но все равно прилично | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.05.03 17:39 | ||||||||||||||||||||||||||||||||||||||||||||||
Сегодня пол дня воевал со следующим SQL запросом Код:
Требовалось оптимизировать... Результатов выборки без DISTINCT примерно 80.000 с DISTINCT примерно 150. Код:
Совсем небольшие изменения в коде, а запрос выполняется примерно за 0.2 секунды. В принципе тоже не ахти, но прогресс все равно очень заметный. В 10 раз. | ||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.05.06 03:02 | ||||||||||||||||||||||||||||||||||||||||||||||
Вот еще вопрос. Вывод текста с переменными. Есть три варианта. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.05.06 11:53 | ||||||||||||||||||||||||||||||||||||||||||||||
ну здесь этот вопрос рассматривался http://wapinet.ru/textbook/speed.htm | ||||||||||||||||||||||||||||||||||||||||||||||
JInn » 2009.05.06 18:47 | ||||||||||||||||||||||||||||||||||||||||||||||
Посмотрел... Скажем так - я в шоке... К тому, что увидел могу добавить, что | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.09.04 16:23 | ||||||||||||||||||||||||||||||||||||||||||||||
PHP 5.3.1 Код:
Добавлено спустя 7 минут 18 секунд:
а что здесь шокирующего? нафига делать эту лишнюю конкатенацию с пустой строкой? | ||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh » 2009.09.05 11:50 | ||||||||||||||||||||||||||||||||||||||||||||||
Интересно, но как по мне, ради этого не стоит избегать switch, ведь там возможно без break; подключить сразу несколько условий, да и визуально кода немного меньше) | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.09.05 11:57 | ||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh, да, зачастую switch удобнее. Но если скорость критически важный параметр, то приходится жертвовать удобством. Я на этот switch обратил внимание когда профилировал Gmanager. Оказалось что одна совсем ничем не примечательная функция определения расширения файла, занимает приличную долю ремени. Тем более что вызывается несколько раз в цикле. Пришлось отказаться от switch и переписать на if / elseif / else. Немного, но прирост производительности это дало. | ||||||||||||||||||||||||||||||||||||||||||||||
Akdmeh » 2009.09.05 13:52 | ||||||||||||||||||||||||||||||||||||||||||||||
Конечно, в циклах это бывает важно. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.09.05 14:06 | ||||||||||||||||||||||||||||||||||||||||||||||
ок =) Код:
Пробовал в т.ч. новые итераторы, но с ними как минимум в 3 раза медленнее. | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.09.05 14:17 | ||||||||||||||||||||||||||||||||||||||||||||||
iconv_substr быстрее примерно на треть. Код:
Такая же ситуация, если переменной $a присвоить какую-нибудь длинную строку. | ||||||||||||||||||||||||||||||||||||||||||||||
AND » 2009.11.06 22:31 | ||||||||||||||||||||||||||||||||||||||||||||||
MySQLi. Запрос с подготовленным выражением и без него. Код:
| ||||||||||||||||||||||||||||||||||||||||||||||
AND » 2009.11.12 16:53 | ||||||||||||||||||||||||||||||||||||||||||||||
PHP: красота кода сказывается на производительности | ||||||||||||||||||||||||||||||||||||||||||||||
Gemorroj » 2009.11.12 19:51 | ||||||||||||||||||||||||||||||||||||||||||||||
действительно. спасибо. |