PHP против ASP.NET. Windows против Linux. Кто самый быстрый?

Misfit Geek, “PHP versus ASP.NET – Windows versus Linux – Who’s the fastest ?”, public translation into Russian from English More about this translation.

Translate into another language.

Замечание: Несмотря на то, что я работаю в Microsoft, эти данные не являются "официальными от Microsoft". Я проводил эти исследования ради интересующего меня сравнения производительности.

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

Как осуществляется сравнение производительности?

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

В Microsoft мне платят за написание кода как на PHP, так и на ASP.NET. До .NET я писал на PHP. Я люблю обе технологии.

Поэтому мне сложно плохо говорить о любом из них. Когда я отдаю предпочтение PHP, мои коллеги по Microsoft шлют мне разъяренные письма; когда отдаю предпочтение ASP.NET, то друзья "пхпшники" называют меня Майкрософтовским фраером.

На проведение этих тестов меня сподвиг тот факт, что каждый имеет представление о сравнительной производительности PHP (Windows и Linux или 5.2 и 5.3), но никто не имеет надежных данных.

Итак, я решил собрать некоторые эмпирические факты.

[Вы можете, КЛИКНУВ ЗДЕСЬ, посмотреть результаты в сводной таблице]

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

Все тесты были выполнены на одной и той же машине:

Компьютер: Toshiba Tecra M5
Память: 4 Гб
Жесткий диск: 60 Гб, 7200 об/мин.

Ubuntu 9 и Windows Server 2008 Standart были установлены на 2 отдельных (но идентичных) жестких диска.

Веб-сервера: Apache2 на Linux и IIS7 на Windows.

Обе операционные системы были полностью пропатчены и обновлены

Никаких ускорителей производительности операционной системы или среды исполнения добавлено не было.

Я не исследовал, насколько быстро эксперт cможет адаптировать тесты для конкретной платформы.

Да, я бы мог установить Byte Caching для PHP, или для ASP.NET использовать Page Caching, Partial Page Caching, SQL Cache Dependency, Multi Threading и т.д.

PHP Byte Code caching ускоряет реализации на PHP как в Windows так и в Linux.

Моей целью было определение относительной скорости РЕАЛИЗАЦИЙ.

Результаты мне показались интересными и неожиданными.

PHP. Linux против Windows.

Я думал, что одна из реализаций будет заметно быстрее другой, но я ошибался. Некоторые вещи были быстрее в Windows, другие быстрее в Linux

* Выполнение операций кажется быстрее в Windows.

* Вызовы функций быстрее в Windows

* Создание объектов и доступ к ним быстрее на Linux с версией PHP 5.2, но с версией PHP 5.3 эти операции быстрее на Windows.

* Вызовы библиотек быстрее на Linux (Например, Encryption быстрее в 3-5 раз на Ubuntu.)

* Доступ к файлам на немного быстрее в Linux, за исключением операций копирования файлов, которые были до 60% медленнее в Windows, по всей видимости это происходит из-за ACL списков безопасности.

* Доступ к MySQL в Linux немного быстрее. В Windows скорость доступа уменьшается с версией 5.3 (Скорее всего, это плохая реализация, см. результаты PostgreSQL ниже).

* Производительность PostgreSQL очень близка на обеих платформах (в пределах 0.06 секунды на 1000 операций). Быстрее на Windows и еще быстрее на Windows с PHP 5.3

* Доступ к MS SQL Server из PHP 5.2 в Windows незначительно медленней, чем доступ к MySQL в Linux. (На момент написания статьи PHP 5.3 не поддерживался)

Что же это все означает?

* Пожалуй, мы можем сказать, что в споре по производительности PHP в Linux и Windows нет победителя (они более или менее одинаковы), поэтому производительность PHP не играет существенной роли при выборе Linux или Windows для PHP приложения.

* Если вы разрабатываете или запускаете приложение, поддерживающее обе платформы, то PostgreSQL для базы данных будет лучшим выбором, поскольку его производительность практически одинакова на Windows и Linux.

* Если вы работаете с приложением, жестко завязанным на MySQL, и хотите запустить его на Windows, тогда вам следует произвести масштабное планирование. (Лично я думаю, что Sun вряд ли заметно улучшит производительность MySQL под Windows).

* Первая версия PHP Driver для SQL Server (Вторая версия в разработке) несколько медленнее, чем MySQL или PostpreSQL, но недостаточно, чтобы отказаться от него. (Следующая версия улучшит производительность.)

В общем и целом, я думаю, что команды PHP и Microsoft IIS добились неплохой производительности на обеих платформах. (Нам только нужно взять Open Source проект (Drupal, WordPress, Joomle и другие) и провести оптимизацию для обеих платформ!)

PHP против ASP.NET. Чистая производительность.

Сейчас я вас обману и подсмотрю в таблицу сравнения.

Да, ASP.NET всюду быстрее, чем PHP (на Windows и на Linux), за исключением операций с атрибутами и копированием файлов.

Обращение к MySQL из PHP в Linux немного быстрее, чем к SQL Server в Windows (для основных типов данных и SELECT-запросов), но незначительно.

Операции ASP.NET (C#), использование объектов, вызовы библиотек и т.д. СУЩЕСТВЕННО быстрее, чем эквиваленты в PHP.

Я знаю, пхпшники и линуксоиды сейчас отложат свое ремесло и постараются опровергнуть мои тесты и результаты :)

Я всегда считал, что если высокая производительность - часть необходимых для вас требований, то выбирайте .NET, который имеет несколько опций "из коробки", таких как, мультипоточность, асинхронные запросы и несколько кеширующих функций.

Заметьте: я не говорю: "ASP.NET быстрее, поэтому не выбирайте PHP !!!!". Я всегда утверждал, что кажущаяся простота PHP имеет свои отрицательные стороны при разработке некоторых современных приложений. (Так же как сложность ASP.NET мешает его раннему изучению.)

Для меня (Ваше мнение может отличаться) самое привлекательное в PHP не язык или платформа как таковая, а то что на нем сделано тысячами талантливых разработчиков (Drupal, Joomla, Wordpress, PHPBB, Nuke, и другие)

В любом случае, приятно, что некоторые данные о производительности PHP на Windows и Linux "приблизительно равны".

Теперь я могу начать писать те Windows-специфичные PHP библиотеки, о которых я мечтал столько лет.

Предупреждение комментирующим:

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

* Если вас не устраивают результаты и вы хотите опровергнуть их - СДЕЛАЙТЕ ЭТО, сопроводив свое несогласие данными. Возьмите мой код или напишите свой, но оперируйте ФАКТАМИ.

Так или иначе, надеюсь, что хотя бы некоторым из вас эта статья была интересна.

Да начнется безумие!

Original (English): PHP versus ASP.NET – Windows versus Linux – Who’s the fastest ?

Translation: © dzlk, og, SSoft, harvy.k2 .

translated.by crowd

Like this translation? Share it or bookmark!