Тест java vs php

Я разработчик php, но недавно мне пришлось писать одно и то же приложение дважды, один раз в php и один раз в java, для класса, который я беру в школе. Для любопытства я сделал бенчмарк на этих двух и обнаружил, что версия java в 2-20 раз медленнее, чем версия php, если к базе данных обращаются, и от 1 до 10 раз медленнее без доступа к БД. Я вижу две непосредственные возможности:

  1. Я сосать в java.
  2. Я могу, наконец, сказать, что люди перестают скулить по php.

Я разместил здесь код сервлета. Мне не нужны ничтожные скудные или незначительные улучшения, но может ли кто-то увидеть ужасную вопиющую проблему с производительностью? Или кто-нибудь может объяснить, почему Java чувствует, что она должна сосать?

Я всегда слышал, как люди говорят, что java быстрее и масштабируемо, чем php, особенно мой учитель, он в этом убежден, но чем больше запросов выполняется, тем медленнее становится Java. По-видимому, php не влияет на повышенные нагрузки, но остается неизменным.

В зрелом веб-приложении Java Servlet использует существующий пул соединений JDBC. Установление нового соединения будет, безусловно, самой большой ценой, которую вы платите вовремя.

Вызов Class.forName для каждой попытки получить соединение также приведет к ненужному замедлению.

Настройка JVM также может быть фактором. В корпоративной среде конфигурации JVM и, возможно, конфигурации GC будут скорректированы и настроены для достижения желаемого баланса между отзывчивостью и использованием ресурсов.

Как указывает Стивен С, JVM также имеет концепцию своего рода «разогрева».

Все, что сказал, я понятия не имею, как PHP сравнивается с Java, и я чувствую, что оба языка предлагают отличные решения для разделения непересекающихся наборов потребностей.

Основываясь на Class.forName("com.mysql.jdbc.Driver"); информации (где принимаются лучшие решения), я думаю, это Class.forName("com.mysql.jdbc.Driver"); в getConnection() – это большой раз.

Создание new String в importFile, когда char[] может быть передан out.println, мне не нравится.

Кажется, что ваш тест отражает первоначальные накладные расходы, а не стабильность. Попробуйте выполнить тесты не-DB несколько раз в цикле (чтобы каждый тест wold запускал код несколько раз) и посмотрите на линейную зависимость между временем выполнения и числом итераций. Я подозреваю, что инкрементная стоимость java ниже, чем для php