Это сложное сравнение, потому что различия в соответствующих стеках означают, что в итоге вы делаете одно и то же по-разному, и если вы делаете их одинаково для сравнения, это не очень реалистичный тест.
PHP, который мне нравится, в своей основной форме загружается с каждым запросом, интерпретируется и затем отбрасывается. В этом отношении он очень похож на CGI (что неудивительно, учитывая, что ему приблизительно 15 лет).
В последние годы для повышения производительности были сделаны различные оптимизации, в частности, например, кеширование кода операции с помощью APC (настолько, что APC будет стандартной частью PHP 6, а не дополнительным модулем, как сейчас). .
Но все же PHP-скрипты в основном временные. Информация о сеансе (обычно) основана на файлах и является взаимоисключающей (session_start () блокирует доступ других скриптов к тому же сеансу пользователя до тех пор, пока session_commit () или скрипт не завершится), тогда как в ASP.NET это не так. Помимо данных сеанса, довольно легко (и нормально) иметь объекты, которые живут в контексте приложения в ASP.NET (или Java в этом отношении, с которым ASP.NET гораздо больше похож).
Это ключевое отличие. Например, доступ к базе данных в PHP (с использованием mysql, mysqli, PDO и т. Д.) Является временным (несмотря на постоянные соединения), в то время как .Net / Java почти всегда будет использовать постоянные пулы соединений и основываться на них для создания каркасов ORM и тому подобного, кеши, для которых нет конкретного запроса.
Как платформа, интерпретируемая с помощью байт-кода, ASP.NET теоретически быстрее, но пределы того, что может сделать PHP, настолько велики, что не имеют значения для большинства людей. Например, 4 из 20 посещаемых сайтов в Интернете - это PHP. Скорость разработки, надежность, стоимость эксплуатации среды и т. Д., Как правило, гораздо важнее, когда вы начинаете масштабирование, чем любая теоретическая разница в скорости.
Имейте в виду, что .Net имеет примитивные типы, безопасность типов и такие вещи, которые делают код быстрее, чем PHP может его запустить. Если вы хотите сделать несколько несправедливый тест, отсортируйте массив из одного миллиона случайных 64-битных целых чисел на обеих платформах. ASP.NET убьет его, потому что они являются примитивными типами, и простые массивы будут более эффективными, чем ассоциативные массивы PHP (и все массивы в PHP в конечном итоге ассоциативны). Плюс PHP в 32-битной ОС не будет иметь собственного 64-битного целого числа, поэтому сильно пострадает за это.
Следует также отметить, что ASP.NET предварительно компилируется, тогда как PHP интерпретируется на лету (исключая кэширование кода операции), что может иметь значение, но гибкость PHP в этом отношении - это хорошо. Возможность развертывания скрипта без отскока вашего сервера - это прекрасно. Просто поместите это, и это работает. Brilliant. Но в конечном итоге он менее производительный.
В конечном счете, я думаю, что вы спорите о том, что на самом деле не имеет значения.