Сравнение производительности PHP5, Windows и Linux

У меня вопрос о производительности Symfony2.

Я развиваюсь с Symfony2 под Ubuntu 11.04 в течение нескольких недель, Apache 2.2.17, PHP 5.3.5, APC 3.1.9, no xDebug

В среде dev время, указанное на панели инструментов Symfony2, никогда не превышало 70 мс.

Сегодня я попытался установить приложение в среду Windows 7: Wampserver 2.2, PHP 5.3.8, Apache 2.2.21, APC 3.1.7, no xDebug

Компьютер в среде Windows намного лучше, чем на ubuntu (SSD, Quad core и т. Д.).

И когда я запускаю приложение в среде dev, панель инструментов всегда показывает минимум 300 мс.

Итак, вы знаете, как это возможно?

Благодаря !

EDIT: нашел ссылку на эту тему: http://fossplanet.com/f6/%5Bsymfony-users%5D-symfony2-slow-windows-xp-116465/

Я также заметил проблему с функцией file_exists (с помощью webgrind).

Итак, какие-то идеи?

Возможно, предмет уже обсуждался, но я был удивлен, не найдя ничего связанного.

Solutions Collecting From Web of "Сравнение производительности PHP5, Windows и Linux"

TL; DR; Установите значение realpath_cache_size в значение> 1000

Редактирование 2: проблема, решаемая в этом PR: попробуйте установить realpath_cache_size для PHP.ini значение> 1000 Недавно было добавлено требование Symfony, исправляющее эту проблему: https://github.com/sensiolabs/SensioDistributionBundle/commit/cf0179711b24d84d4a29d71a4010540f4c990bd8

Редактировать: я только что увидел этот ответ: https://stackoverflow.com/a/17914570/980547 И это уменьшило время генерации страницы на 4 на окнах, когда я установил realpath_cache_size = 4096k в свой php.ini (!)

Старый ответ:

Итак, я сделал сравнение между webgrind:

На окнах (быстрый компьютер), называемых app_dev.php:

Веб-панель инструментов

Таким образом, вы можете видеть, что веб-панель инструментов показывает время генерации 764 мс (увеличено из-за xDebug и профилирования, но все еще актуально). Webgrind показывает:

  • 651 вызывает file_exists () в течение 232 мс (что много!)
  • 603 вызовов filemtime () (211ms)
  • 230 вызовов UniversalClassLoader-> loadClass () (119ms)
  • 230 вызовов UniversalClassLoader-> findFile () (38 мс)

В Linux (медленный компьютер) app_dev.php:

Веб-панель инструментов

298 мс общего времени генерации (что более чем вдвое меньше, чем у окон).

  • 237 вызовов UniversalClassLoader-> findFile () (36ms => в 4 раза меньше)
  • 237 вызовов UniversalClassLoader-> loadClass () (20 мсек => в 2 раза меньше)
  • 623 вызовов file_exists () (только 4 мс !!!)
  • 605 calld to filemtime () (только 4 мс !!!)

Проблема заключается в том, что файлы file_exists () и filemtime () работают гораздо медленнее, чем в Linux. В Windows PHP ищет файлы с файлами_файлов, filemtime, loadClass или findFile в 60% случаев. Это известная проблема?

Изменить: так что проблема только для среды dev, в производстве нет файлов-файлов, поскольку все кэшируется.

Я только начал развиваться с Symfony2 под Windows, и это было полной болью в заднице – я протестировал xcache, apc и eaccelerator, которые либо практически не отличались, либо просто разбивались при использовании вместе с xdebug.

Теперь я обнаружил WinCache от Microsoft – что сделало Symfony2 под Windows невероятно быстрым … Мои запросы заняли от 1,5 до 3 секунд – с WinCache до 200 мс . И это даже не беспокоит xdebug – профилирование и отладка по-прежнему работают как шарм.
Изменить: все это касается среды dev.

Единственным недостатком является то, что он работает только на nts php, и я думаю, что для модулей Apache требуется ts – если вы запустите его с помощью fcgid, хотя у вас не будет проблем.

Не могу поверить, что я проработал столько лет без этого монстра …

Ссылки:
WinCache на php.net
Официальный сайт WinCache
Бинарные

Интересно найти!

Я бы сказал, так как это не проблема symfony2, она должна быть исправлена ​​в двоичном формате PHP.

Но кто же запускает свой вебсервер на окнах? : D

Попробуйте с ApcUniversalClassLoader http://symfony.com/doc/2.0/book/performance.html