#java #php #performance #daemon #command-line-interface
#java #php #Производительность #демон #интерфейс командной строки
Вопрос:
Я хотел бы знать, есть ли у кого-нибудь опыт работы со следующим сценарием:
- приложение, подобное deamon, на базе консоли Linux, работающее в бесконечном цикле, берущее некоторые данные из stdin, обрабатывающее данные, выводящее некоторые данные в стандартный вывод
Я не спрашиваю о производительности компиляции. Приложение будет выполняться около 24 часов, а затем перезапущено. В обоих случаях приложение компилируется и запускается внутри какой-либо виртуальной машины, php-runtime и JVM.
Вопрос в том, какова будет разница в производительности этого приложения, написанного на PHP и на Java.
У меня есть такое приложение на PHP, но интересно, стоит ли тратить время на то, чтобы переписать его на Java.
Комментарии:
1. «Это зависит». И если разница вообще имеет значение… «зависит». (Я бы ожидал, что Java в современной JVM будет последовательно быстрее при «запуске» кода. Однако «бутылочное горлышко» может находиться где-то в другом месте, например, в базе данных.)
2. Приложение подключено к базе данных MySQL, и PHP, и Java будут использовать точно такие же запросы и одинаковую логику обработки результатов. Я полагаю, что не будет никакой разницы между mysql_query (query1) и statement.ExecuteQuery (query1), если запросы и результирующие наборы одинаковы.
3. Итак, вернемся к началу: «это зависит». Я бы ожидал меньшей практической разницы для приложения, привязанного к базе данных. Для определения любой применимой производительности / бутылочного горлышка требуется сравнительный анализ. Хотя я не поощряю использование PHP, «Если он не сломан …» (переключение на язык X может иметь другие преимущества, но следует провести анализ затрат и выгод)
4. Конечно, я могу потратить несколько дней на переписывание приложения на Java, а затем сделать несколько тестов. Но это причина публикации здесь моего вопроса — я хотел бы знать, стоит ли это делать.
5. «Это зависит». Смотрите выше. Java-приложение не должно быть медленнее (хотя оно может потреблять больше памяти и иметь более длительную фазу «прогрева»). Насколько это быстрее (если вообще возможно), зависит от ряда факторов, на которые здесь нельзя дать адекватного ответа. Следовательно, «это зависит», хотя в приложениях, связанных с вводом-выводом, обычно наблюдается меньший выигрыш. Не забудьте соответствующим образом использовать буферы для ввода-вывода (в Java или PHP).
Ответ №1:
Это будет зависеть от ваших требований. Как быстро это должно выполняться? Выполняется ли оно в настоящее время в пределах допустимых параметров? Увеличится ли его использование? Приведет ли это увеличение к тому, что он выйдет за пределы порога скорости?
При этом место на диске дешевле, чем память. Если у вас это уже работает, сохраните PHP.