ЖЖ от 2005-11-30 14:17:00

Немого о произодительности разных версий PHP:

тесты производил на небольшой библиотечке, которая эмулирует SQL для текстовых файлов. Я когда-то её написал для интереса, да так и бросил в состоянии SELECT/INSERT/UPDATE. Производится запрос:

SELECT * FROM a1, a2 WHERE a1.a=a2.a

В таблицах a1 и a2 — 202 строки.

Результат на разных версиях PHP:

0,92 сек — PHP 5.0.5
0,51 сек — PHP 5.1.1

кстати, установка eAccelerator на скорости почти не сказывается, поскольку цикл прохода по таблицам и сравнение (самые ресурсоёмкин опреации, остальное — подготовка), сделаны внутри create_function, а я где-то читал, что оптимизаторы внутрь таких вещей не заглядывают. И вот ещё откровение — eval работает медленнее, чем вызов альфа-функции.

Комментарии 12

frumich № 1
Я про пхп врать не буду — не знаю.
Но когда такие вещи в оракле тестирую — создаю штук двадцать подобных конкурентных сессий.
Бо если так тестировать — получится, что восьмипроцессорник санфайр с спарк3 проиграет обычной рабочей станции с ксеоном.
bolk автор № 3
Ну, всё-таки тестирование процов и софта на них — вещи сильно разные. А тут, в общем-то, было всё ясно — должно стать быстрее, в changelog написано:

Improved performance of:

* general execution/compilation. (Andi, Thies, Sterling, Dmitry, Marcus)
* switch() statement. (Dmitry)
* several array functions. (Marcus)
* virtual path handling by adding a realpath() cache. (Andi)
* variable fetches. (Andi)
* magic method invocations. (Marcus)

Хотелось просто пощупать — насколько стало быстрее. Хотя бы порядок. И, что действительно важно, требовалось узнать — а действительно ли есть прирост. Да и не особо понятен смысл конкурентных сессий в данном случае — блокировок нет, таблицы открыты в readonly, транзакций нет.
frumich № 5
Имеется в виду, что новая версия софта может показать себя лучше или хуже при некотором количестве конкурентных запросов.
frumich № 6
Две сессии на одном проце одновременно не обработаются — тестируется постановка запросов в очеред и обслуживание очереди.
bolk автор № 8
В PHP ничего такого нет, этим занимается OS.