Скорость работы PHP в Windows. Отчего так медленно?
Собственно пару месяцев назад случилось так, что пришлось развернуть Apache непосредственно под Windows (Windows 8). Раньше работал под виртуальной машиной с Debian и все было более менее нормально.
Работая с проектами на Symfony2 столкнулся с приличным прогибом производительности. Профайлер показал что дольше всего отрабатывали функции preg_match, file_exists и PDO. Проблемы с PDO удалось решить указав в качестве хоста непосредственно IP адрес, но вот с file_exists и preg_match проблемы остались. Выполнение этих функций занимает порядка 40%-50% отработки скриптов.
Причем на машине с ubuntu/debian профайлер никаких аномалий не показывает да и вообще код отрабатывает в десятки раз быстрее (0,3 секунды против 3-4 секунд на Windows).
В порядке эксперимента сегодня установил Debian под виртуальной машиной на том же разделе, где находится код проекта. Сделал замеры производительности и оказалось что под управлением Debian, даже в виртуальной машине, прирост производительности в PHP достигает 300% а для MySQL запросы выполняются в 2 раза быстрее.
Система чистая, ничего особо не изменялось в настройках. Все (от Windows до виртуальной машины) размещено на SSD. Меня лично удивляет настолько низкие показатели производительности. Возможно что-то не так именно у меня, посему интересует сталкивался ли кто с таким и как лечится.
Ну как, вообще домашней системой у меня служит Windows8, потому что я так хочу. Множество мелких плюшек меня радуют, да и вообще я люблю все новое.
А Apache пришлось развернуть для работы. Не было времени возиться с Linux-ом (в плане устанавливать на виртуалку) ну и так вот и остался по воле случая.
@Fesor можеш запускать код на виртуальною машине запуская код на смонтированной в оперативной памяти файловой системе, в которой, том числе, находиться и база данных. Если нет обращения к ресурсам которые не в оперативке то быстрота может возрасти на порядок)
Мне помогла покупка SSD-диска. С использованием APC, в prod окружении запрос идет 200ms, в dev — 1000ms.
До замены стоял ноутбучный 2.5" 5400 об/мин — запрос в dev окружении (с использованием APC) выполнялся 5-8 секунд.