что быстрее java или php
Что выбрать в 2021 году? Java или PHP?
Около 80% компаний в мире используют PHP для создания своих веб-приложений. Один из самых сложных вопросов для предпринимателя, который хочет открыть собственный стартап — какой язык программирования выбрать для своего проекта?
Выбор языка для своего проекта зависит напрямую от потребностей, бюджета и других параметров. Очевидно, что PHP больше всего подходит для разработки сайтов, но на самом деле и Java имеет целый ряд преимуществ и недостатков.
Я начну эту статью с нескольких интересных фактов о PHP:
— Гиганты электронной коммерции, такие как Amazon, Facebook и Wikipedia, заложили основу с помощью PHP, и до сих пор 80% из 10 млн веб-сайтов используют PHP. — С точки зрения бизнеса, особенно для вашего собственного стартапа, наем PHP-разработчика дешевле, чем Java-разработчика. — Популярные PHP-фреймворки, такие как Symphony и Laravel, чрезвычайно мощны и ускоряют процесс разработки веб-приложений.
Проще говоря, PHP был создан для интернета. Все основные CMS созданы с использованием PHP — сюда относятся Shopify, Opencart, WooCommerce, Magento, Drupal и Joomla.
PHP — это интерпретируемый язык, который компилируется в байт-код, а затем интерпретируется механизмом выполнения. Следовательно, с точки зрения безопасности памяти, Java безопаснее, поскольку защищает вашу систему от атак и ошибок. Поэтому, когда речь заходит о безопасности, конечно выбор падает на Java. +1 балл к java.
PHP анализирует файл и вводит поток для каждого вызова. В PHP нет процесса компиляции. Однако в модели CGI компиляция не имеет смысла. В то время как Java ранее описывалась как медленная, JVM сильно оптимизирована для скорости: только во времени компиляции. Java компилирует файлы JSP и горячие точки JIT аксиоматически.
Другими словами: PHP — это инструмент сценариев на стороне сервера с открытым исходным кодом, широко используемый для разработки отзывчивых порталов, тогда как Java — это язык программирования на стороне клиента, который в основном используется для сборки.
Сравнение дизайна
С точки зрения дизайна и архитектуры Java — это компилируемый язык, который быстрее PHP. Тем не менее, когда мы применяем оба языка на практике, PHP оказывается быстрее, чем Java в Интернете. PHP разработан для Интернета и представляет собой наиболее продвинутый, основной и серверный контент. И здесь PHP опережает JAVA, потому что фреймворки PHP предназначены для корпоративной сети. +1 в пользу PHP.
Что лучше выбрать для разработки веб-приложения
Оба они являются довольно старыми языками, но Java немного опережает PHP, предоставляя инструменты отладки и более богатый набор API.
Заключение
Короче говоря, выбор между Java и PHP полностью зависит от требований вашего проекта. И Java, и PHP, используются для разработки специального программного обеспечения, включая веб-разработку и разработку веб-приложений. Но очень немногие стартапы предпочитают полагаться на Java.
Например, PHP Laravel широко используется для стартапов. Лишь небольшой процент современных веб-стартапов использует Java. Оба веб-решения одинаково важны и играют важную роль. PHP лучше подходит для небольших приложений, а Java лучше подходит для крупных веб-приложений.
Производительность C++ vs. Java vs. PHP vs. Python. Тест «в лоб»
/update/ Статья обновлена по результатам обсуждения. Поправлен код Python (около 40% ускорения), написан код на Perl и Ruby (но меня терзают смутные сомнения, что с ruby я что-то сделал неправитьно), поправлен код на Java (на моей машине корректнее тестировать int, а не long. к тому же int в Java эквивалентен long в C++).
Вопрос производительности (скорости работы) различных языков часто всплывает в комментариях, на форумах, часто необоснованные :). Встречаются статьи, в которых авторы приводят примеры, где выигрывает реализация на том или ином языке.
После прочтения очередной статьи мне захотелось самому разобраться «здесь и сейчас». Сначала захотелось сравнить Java и C++ (не верил я, что в вычислительных тестах ява может догнать и обогнать cpp). 10 минут и простой код на C++ и яве готов: простой цикл и математические операции. После написания теста подумал и перевёл их на php и python. Позже добавился код на perl и ruby.
Итак, пару слов о тесте:
Алгоритм синтетический, долгий цикл (двухуровневый) и в нём вычисление математического выражения. Таким образом оценивается вычислительная производительность самого языка (интерпретатора или скомпилированного кода), никаких привязок к качеству реализации тех или иных библиотек, никаких внешних сервисов, никаких системозависимых операций (диск, сеть, графика).
1) Мне нравится ява и я честно предполагал, что результаты будут лучше. Обновлено: long в 64-х битных системах работает значительно быстрее. При работе с int в 32-х битных системах Java значительно ускоряется (на моей машине быстрее, чем C++, видимо, JVM оптимизирует исполнение по умолчанию)
2) Я догадывался, что php будет медленней C++ и Java, но не думал, что он окажется быстрее Perl.
3) Предполагал, что Python будет сопоставим с PHP, но ошибся. Видимо, стандартная поставка PHP лучше оптимизирует исполнение кода.
4) Я совсем не знаком с Ruby, код взят из одного из комментариев. Причём использован код 1, так как у меня он работает быстрее чем код 2. Возможно, это также связано с тем, что у меня 32bit-система.
5) Я достаточно уважительно отношусь к различным языкам программирования, эта статья ни одним из углов не нацелена на разжигание холиваров. Каждый язык имеет свою нишу и своих поклонников.
Чтобы не заставлять вас читать всю статью, сразу приведу краткие результаты.
Диаграмма (обновленная):
Старый вариант здесь
На диаграмме слолбец с Ruby частично прозрачен по причине того, что на моей машине скрипт Ruby исполнялся неприлично долго, в то время как в комментарии указано, что скрипт исполняется в 4 раза быстрее скрипта на Python — я в замешательстве.
Столбец с Python прозрачен, так как при включении psyco скрипт ускоряется более чем в 10 раз. Проверил на своей машине. Но это, с моей точки зрения, хак, не отражающий собственную производительность языка.
Столбец с PERL, как могут заметить старожилы, теперь идёт вровень с Python 2.6. Причиной этому послужила смена кода с C-подобного синтаксиса на использование range. Дополнительную производительность (около 12%) можно получить использовав директиву «use integer;», но это, по-моему, тоже хак.
30
Время исполнения — на P4-1.8Ггц.
Производительность — относительно производительности базового кода на C++.
Добавлен столбец с запуском Java-кода с ключём «-server». После перехода с «long» на «int» (повторюсь, int в java такой же как и long в c++ на 32bit-arch) он начал давать прирост в производительности почти вдвое.
Столбец с Ruby 1.9 на моём железе не тестировался, результат перенесён через сравнение с производительностью Python’а на той же машине.
И, чтобы не быть голословным, тестовый код.
Java, Test01.java (int в Java то же что и long в C++):
#include
using namespace std;
int main( void ) <
long r = 0;
for ( int i = 0; i for ( int j = 0; j «answer: «
Python, Test01.py (вынос кода в функцию ускоряет работу кода почти вдвое, отдельная же инициализация range() на моей машине даёт порядка 5% производительности):
Perl, Test01.pl (обновлено, с range работает на 25% быстрее против c-подобного синтаксиса for):
Вот здесь приведён красивый пример на Perl, но, мне кажется, такой вариант уже слишком специфичен.
r = 0
for i in 0..10_000 do
for j in 0..10_000 do
r = ( r + ( i * j ) % 100) % 47
end
end
puts «answer: #»
Вот здесь в комментариях обсуждают решение на erlang.
Как видите, ничего сложного: два цикла и математическое выражение. Вычислительная задача в чистом виде.
мой оригинал — там старая версия статьи, а также информация об версиях использованного ПО и результаты тестов из консоли.
Ещё раз повторюсь: каждый язык имеет свою нишу, своих поклонников и свои задачи, с решением которых он справляется лучше других.
PS: а вообще, нет смысла загоняться и меряться чем бы то ни было, производительность самого языка важна для достаточно узкого круга задач, т.к. в общем случае, системы, библиотеки и прочая обвязка нынче несоизмеримо тяжелее самой вычислительной задачи.
Сравнение скорости Java и PHP
Какой язык быстрее для Интернета, Java или PHP?
Трудно ответить, так как в теории Java должна быть быстрее:
он предварительно скомпилирован, любой тривиальный алгоритм будет работать быстрее в Java, чем PHP, и была проделана огромная работа по оптимизации Java от улучшения кода, стандартных библиотек до компиляторов JIT и т.д.
PHP загружается и интерпретируется каждый раз, если вы не используете оптимизатор Zend, объекты инициализируются при каждом выполнении, даже самая тривиальная строка varaible на самом деле является сложным объектом со многими поддерживаемыми методами.
Проблема в том, что на практике PHP-сайты, похоже, работают быстрее, используя меньше ресурсов.
Я думаю, это связано с тем, что разработчики PHP используют более простой подход к дизайну и не теряются, пытаясь реализовать экзотические шаблоны проектирования и внедряя бесконечные бессмысленные абстракции.
Скорость не имеет значения
в большинстве случаев.
Обработка дешевая. Код, в котором вам комфортно. Написание правильного кода значительно ускоряет скорость, а затем выбирает язык. Твердые соглашения о кодировании и план проектирования также помогут больше.
Лучший ответ, который я мог найти
Скомпилированы веб-приложения Java
к байт-коду. Даже JSP, которые
скомпилированный во время выполнения. Это
преимущество перед большинством использования PHP,
где оптимизатор Zend не находится в
использовать.
Данные могут быть кэшированы в реальном сервлете
экземпляр – прямой или простой способ
делать это в PHP, насколько мне известно
(существует только один
экземпляр сервлета /JSP в памяти)
Приложения Java, как правило,
n-уровневое, что в целом приводит к
более удобное приложение на
незначительное снижение производительности. Эта
вероятно, звучит тролли, но
честно: даже внутри самой Java
прямое использование JDBC всегда будет
быстрее, чем через три
слоев объектов в базу данных.
Но это n-многоуровневое Java-приложение, способное поразить базу данных раньше, чем несжатый, взломанный монолитный PHP script? Я не думаю, что есть ответ на этот вопрос.
Все, что сказал, я работаю над n-уровневой MVC-инфраструктурой для php 5 (она называется Pure (http://www.sf.net/projects/php-pure)), поэтому мои PHP-приложения, как правило, также n-level. Я буду беспокоиться о скорости, когда и если это станет проблемой. На данный момент это определенно не проблема “.
Невозможно ответить на этот вопрос тем или иным, если вы не определите, что вы хотите измерить скорость.
Некоторые вещи намного быстрее в PHP (например, в нативной функции), другие вещи намного быстрее в Java.
Как бы то ни было, я уверен, что производительность Java – скорее чем PHP, а разработка PHP-проекта быстрее
Цель каждого языка существенно отличается от другого, поэтому, если вы обсуждаете, что использовать для конкретной задачи, вы должны, как правило, основывать решение по этой задаче (и насколько хорошо подходит для каждого языка) а не производительности.
Для сырой производительности кода, написанного на языке (в отличие от простого вызова кода в стандартной библиотеке), Java, вероятно, будет работать быстрее PHP как чрезвычайно общее правило. Если это имеет значение, возможно, что PHP просто не очень хорошо подходит для этой задачи.
в чем преимущества Java перед php в веб приложениях
Приветствую всех,
но интересует мнение в первую очередь java программеров,
скажите пожалуйста в чем на Ваш взгляд преимущество Java перед php при написании веб приложений,
один факт понятен — писать под джавой говнокод сложнее чем на php, и это существенный аргумент, но какие есть ещё?
php изучать проще, примеров больше, библиотек навалом, использовать проще… тех же серверов навалом, насчет производительности несогласен — тот же FarmVille с 70 млн. юзеров имеет php на бэкэндах.
Никоем образом не хочу развести холивар,
всем спасибо.
Преимущества Java «вообще» железа не касаются в принципе. Это строгий язык, на котором можно решать в принципе любую задачу, которая будет работать почти где угодно. Чисто «идейный» аспект — на нем сложнее учиться, но легче писать, он более логичен и этим не раздражает программиста, он развит и расширяется «до бесконечности». Это действительно инструмент на все случаи жизни. Но у него «тяжелая» инфраструктура.
PHP прост в изучении, «легок» в нагрузках, работает внутри HTML страниц. Из-за чего востребован и распространен. Но все хорошо только в начале. Потом отсутствие строгих ограничений становится источником трудноуловимых ошибок, а сам язык воспринимается нелогичным и непредсказуемым. Большие проекты на PHP — это кромешный мрак. Но это тоже все аргументация «идейная».
А в реальной ситуации все решает задача, средства и среда. Так что ответа вы не получите 🙂
В споре между Java и PHP побеждает Python! 🙂
Java тяжеловеснее PHP. VPS для простого приложения будет более загружен для java нежели для php. И потребует больше памяти. Для сложных и тяжеловесных — как написано так и будет.
Да, я что-то не слышал про shared хостинг под java.
С точки зрения стоимости разработки PHP лучше — быстрее и дешевле. В случае разработки больших приложений, можно говорить про прототипирование на PHP, с последующим переписыванием на что-нить компилируемое — это может быть и java. Хотя связка python/C выглядит лучше.
Тогда уж побеждает Go 🙂 Хотя его еще попилить с годик надо… 🙂
Никогда не понимал, зачем что-то прототипировать на другом языке? Не проще сразу прототипировать на том, на чём будет идти разработка?
По поводу VPS, спорный вопрос… У меня спокойно весят где-то 6 проектов на 768Mb памяти. Каждый проект завязан кучу тяжелых фреймворков (Hibernate, Tapestry 5, EhCache и т.д.), пулы на PostgreSQL и т.д… Память конечно вся забита и в идеале лучше иметь 1024 памяти…
Но в тоже время Python на другой VPS также кушает все 512Mb памяти. Там уже Memcached, MySQL и Django… Так что разница не такая уж и большая. Хотя PHP я конечно не в курсе, сколько будет памяти кушать…
другой язык = другая скорость разработки. Языки с гибкой типизацией, набор библиотек позволяют быстро получить нечто функционально похожее. И потом допиливать, переписывая узкие места на компилируемом языке.
А попробуйте запустить java на 256 метрах 🙂 А php проекты в таких vps живут пачками вполне себе ничего.
Короче всего так дорога, которую знаешь:)
К слову, разрабатывать в современном мире проект, опираясь только на стандартную библиотеку — самоубийственная растрата себя любимого. Лучше использовать либы и фреймворки, а потом пойти девушек гулять.
>насчет производительности несогласен — тот же FarmVille с 70 млн. юзеров имеет php на бэкэндах.
Абсолютные цифры ничего не говорят, надо сравнивать пускай даже количество пользователей (а не хитов, не говоря уж о сценариях), отнесённое к задействованным ресурсам. Может там где для PHP надо кластер поднимать, для Java VPS хватит, а может наоборот, не знаю. Сам сейчас мечусь между разными языками, выбирая что лучше подойдёт для сервера с пиком в 100 запросов/секунду, если это вообще реально на 4-х ядернике с 8Гб ОЗУ, получается 40 мс на запрос. По некоторым тестам Java показывает примерно 4-х кратное превосходство по производительности перед PHP и сравнимое с C# в сторону, которого смотрю.
С PHP давно не работал (последний проект 2006 год), поэтому может что-то сейчас поменялось. Но в целом, я до сих пор считаю, что Java и вообще типизированные языки (например, Go, который недавно вышел) лучше при разработке больших проектов.
Когда язык типизированный, значительно проще изучать сторонний (да и свой) код или API. А в IDE сложнее сделать ошибку во-время написания кода.
По поводу библиотек на PHP их конечно несколько побольше, чем на Java (в веб направлении). Но я решал эту проблему через RPC (на не критичных участах) или через JNI (нативный вызов Си\Си++ функций через специальный интерфейс). С другой стороны фундаментальные вещи типа ORM или веб-фреймворки сделаны намного качественее.
Качественее сделано управление зависимостями, сборка и продакшн проекта. Всё автоматизировано и заточено под Java.
В Java у вас один процесс работает с клиентами, в PHP же нужно на каждого клиента новый процесс. Не знаю насколько это влияет на производительность, но в Java в этом плане удобнее работать, при написании каких-то расшаренных сервисов для клиентов.
В ближайшее время появится возможность вызова Python, Ruby библиотек или фреймворков прямо из Java. Можно уже сейчас это делать, но в Java7-8 это будет значительно оптимизировано. Так что проблема с библиотеками будет решена.
Если сейчас хотите начать работать с Java в вебе, присмотритесь к веб-фреймворкам Grails или Tapestry 5. Первый не совсем Java (построенный на Groovy), но имеет большое количество интеграций с библиотеками. Второй полностью на Java, но меньше интегрированных библиотек.
Также Spring сейчас является мейнстримом в разработке веб-проектов. Выше перечисленные фреймворки либо построены на нём, либо имеют возможность интегрироваться с ним.
Java убьет ваш стартап. PHP спасёт его
Так, всем спокойно. Это не очередной диспут на тему что лучше PHP, Java или ваш любимый язык. Я хочу поговорить о корпоративных технологиях, например Java Enterprise, и о том, как они могут похоронить ваш интернет-стартап или малый/средний веб-бизнес. Более того, речь идет о серьёзных технология вроде PHP (или Ruby, Python, Perl и т.д.), которые могут спасти его и поднять на новый уровень. Я мог бы взять любые два языка или технологии. Я попросту выбрал два самых-самых, чтобы донести суть, и немного потроллить вас.
Это не технический отчёт для технических специалистов, а комментарии о бизнес-деятельности (для не технических специалистов), о том, что нужно молодому, малому/среднему веб-бизнесу и что в конце концов может его погубить.
Все что нужно малому веб-бизнесу, неважно, насколько большим вы его представляете, так это LAMP. Для тех, кто не в курсе LAMP — это акроним, который определяет операционную систему, веб-сервер, базу данных и язык программирования. В этом случае Linux, Apache, MySQL, и PHP. Допустим вы основатель бизнеса или старший руководитель (не технического отдела), и вы полагаетесь на советы других, касательно технологий. Тогда, вероятно о LAMP (особенно о PHP и MySQL) вы слышали следующее: это не совсем современно, не достаточно хорошо, “слишком просто” и вы не получите той производительности, которую ожидаете. Это полный бред. Факты:
Кроме этих фактов, каждый не технический предприниматель и руководитель, должен понимать следующее о языках, корпоративных решениях и разработке…
Проектирование! Архитектура и проектирование системы куда важнее чем выбор языка или чего-либо еще. Бесполезно выбирать «правильный» язык или технологию если у вас плохо спроектированная система. Java — компилируемый язык (от части) и как таковой быстрей чем PHP. Но на практике, в вебе, PHP быстрее (как правило). Потому что PHP создан для веб. Фреймворки PHP спроектированы для корпоративных веб решений. Корпоративное решение — это прежде всего архитектура, а не технологии и языки. Когда кто-то навязывает вам язык (например Java), без полной оценки и обсуждения архитектуры — это похоже на покупку дома, которого вы никогда не видели, только потому что его строили с помощью самого лучшего молотка (или кувалды, в случае с Java EE).
Язык — это инструмент. Инструмент вы выбираете для работы. А архитектуру и проект для своей конечной цели. Язык — это инструмент. Вот и всё. Говорить, что язык не корпоративный всё равно что сказать: «молотком нельзя строить небоскрёб, потому что им строят дома». Я слышал немало заблуждений в духе MBA (степень магистра в менеджменте) вроде: « PHP годится разве что для семейного бизнеса». Нет. Слабый проект сгодится для семейного бизнеса. PHP отлично работает в умелых руках того кто знает как проектировать корпоративные решения. У PHP нет ограничений, которые препятствуют этому, а в случае с веб — у PHP есть много преимуществ перед другими языками.
Если вы сосредоточитесь на инструментах, вместо архитектуры — это закончится тем, что вы будете забивать гвозди тараном (Java), когда молоток (PHP) был бы более уместным. Также, вы быстро потеряете деньги, инвестируя в инструменты и персонал, которые не нужны. Если вы хотите построить небоскреб, то проектируйте небоскреб. Сильные корпоративные решения зависят от хорошей архитектуры и проектирования, а не конкретного языка.
Будьте проще. Что бы вывести бизнес идею на рынок, вам нужно простое, быстрое и недорогое решение, которое будет работать сейчас и масштабироваться позже. Лишнее может навредить и привести к плачевным результатам. Если у вас не будет сайта размером с Amazon буквально в тот момент, когда вы только начинаете, то лучшим решением будет сильная архитектура и PHP (или аналог) в среде LAMP, а не чудовищное раздутое решение Java Enterprise.
Учитывайте масштабируемость, но масштабируйте позже. Не слушайте, если вам советуют сразу начать использовать инструменты, которые понадобятся, когда вы дорастете до масштабов Amazon или Facebook (оба кстати широко используют PHP и похожие языки). Что вам нужно сейчас, так это хорошее проектирование, простота и недорогие инструменты. Если вы все сделаете правильно при проектировании, то легко масштабируетесь позже. Facebook запускали на PHP, и он до сих пор его использует, и похоже, что всё превосходно масштабируется. Wikipedia тоже на PHP, и с этим у них тоже все в порядке.
Необходимые действия для учредителей и предпринимателей, без технических навыков, запускающих веб-бизнес…