Данная тема была не одну сотню раз поднята в различных статьях. Достаточно нагуглить "php vs java" и вы найдете пару-тройку миллиончиков совпадений. Однако мне стало интересно прочувствовать это на своей шкуре ).
Тестировать будем разумеется на одном железе и ОС.
Конфиг такой:
c2dE8200/Debian5.0/jdk6u18/php5.2.6/tomcat6.2.0/apache2.2.9
Итак, поехали !
1. Для начала сравним традиционный хелловорлд в консоли.
Код приводить нет смысла. Для более усиленной нагрузки сделаем такой цикл на шеле:
#!/bin/sh for ( i = 0 ; i <= 30; i++ ) do java Test00 doneПолучилось такое среднее время:
Результаты довольно интересные, поскольку ява отстает довольно много, это скорее всего объясняется временем запуска ява-машины. Как видно она дает о себе знать.
2. Математика.
Test01.java:
public class Test01 { public static void main(String[] args) { int r = 0; for (int i = 0; i < 100000; i++) { for (int j = 0; j < 10000; j++) { r = (r + (i * j) % 100) % 11; } } } }Test01.php
$r = 0; for ($i = 0; $i < 10000; $i++) { for ($j = 0; $j < 10000; $j++) { $r = ($r + ($i * $j) % 100) % 11; } }Запускаем тесты:
time java Test01 time php Test01.php
Здесь уже видна выгода java и проигрыш php почти в 4 раза.
3. Тестирование в вебе.
Для тестирования будем использовать продукты от Apache - apache Web server и apache Tomcat соответственно. Тестируем всё тотже helloworld.
Чтобы адекватно сравнить время воспользуемся apache benchmark (он же ab)
ab -n 10000 -n 10000 http://localhost:8080/test/test02 ab -n 10000 -n 10000 http://localhost:80/Test02.phpКод пхп можно не менять с первоко теста, а для явы придется поправить на простейщий сервлет:
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Test00 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello php slon!"); } }
Результат прямо противоложный первому тесту. Никакого тюнинга апача и томката не производилось, поэтому при определенной оптимизации и использовании кеширующих движков в пхп (например eaccelerator) можно получить другие цифры.
Как я уже говорил, данные эксперименты осуществлены сугубо для личного морального удовлетворения и возможно какой-либо значимости для многих могут не иметь :) Тем не менее буду очень рад если это кому-нибудь пригодится.
Возможно в следующих постах я сравню реализации некоторых вещей в java и php, таких как работа с разными бд, рендеринг графики и тп. Удачи !
2 комментария:
что за java? неужто JSP?
жаба как жаба, никакой не жсп )
Отправить комментарий