Беглое сравнение Drupal 6, Drupal 7 и Pressflow с помощью XHprof

06.05.2011
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin
Автор:

Приведенные ниже отчеты не несут практической ценности, в силу того что в реальных условиях (с установленными модулями, набитым контентом, с зарегистрированными пользователями и тд) будут совсем другие результаты. Поэтому цель данной статьи просто наглядно показать работу профайлера...

Для демонстрации я установил 3 сборки CMS Drupal:

1) Drupal 6.20

2) Drupal 7.0

3) Pressflow 6.20.97

Далее три раза запустил бенчмарк веб сервера с помощью утилиты siege:

root@server:/# siege 'http://xhprof.mysite.com/d6/?enable_xhprof=time&namespace=d6' -d10 -r10 -c10
root@server:/# siege 'http://xhprof.mysite.com/d7/?enable_xhprof=time&namespace=d7' -d10 -r10 -c10
root@server:/# siege 'http://xhprof.mysite.com/pressflow/?enable_xhprof=time&namespace=pressflow' -d10 -r10 -c10 

10 заходов по 10 конкурентных запросов для каждой установки с интервалом между запросами 1-10 сек.

Чтобы просмотреть усредненные данные по всем запускам XHprof, веб разработчику нужно создать файл total.php в директории нашего html-интерфейса, который будет парсить идентификаторы запусков и перенаправит нас собственно на усредненный отчет:

php
if (!$_GET['namespace']) { 
  exit('there is no namespace in $_GET parameter.'); 
} 

$namespace = (string)$_GET['namespace']; 
$path = ini_get('xhprof.output_dir'); 
$dir  = dir($path); 
$pattern = "/^([0-9a-z]{13})\.{$namespace}$/i"; 
while ($file = $dir->read()) { 
  if (preg_match($pattern, $file, $matches)) { 
    $files[] = $matches[1]; 
  } 
} 

header(sprintf('Location: /xhprof_html?source=%s&run=%s', $namespace, implode(',', (array)$files))); 

Теперь, при заходе на /total.php?namespace=, нам будет предоставлена информация о всех запусках XHprof для конкретного namespace.

В нашем тесте мы получили следующие результаты (кликабильно):

             Drupal 6                                    Drupal 7                                  PressFlow

Ниже приведены скриншоты (кликабильно) с графического интерфейса. Да, все очень сложно и наверное ничего полезного, но смотрится красиво, некая схема работы Друпала изнутри =)

              Drupal 6                                      Drupal 7                               PressFlow

Данные графического интерфейса лучше использовать в случае профилирования не большого участка кода.

Выводы

Как видим наилучшие результаты показал Pressflow (среднее время генерации страницы 109 миллисекунды), на втором месте практически без отрыва - Drupal 6.20 (114 мс) и далеко на третьем месте Drupal 7.0 (238 мс).

Хотя на самом деле в боевом режиме Pressflow покажет намного лучшие результаты по сравнению с базовым Друпалом.

Так же интересный факт – с графических отчетов видно что в 7-ом Друпале нет «критических» точек (то есть отсутствуют красные элементы).

И да, эксперимент повторялся трижды на разных серверах и Drupal 7 везде с более чем двойным отрывом позади...

1 vote, Rating: 5
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin

Также по теме

1

Иногда возникает необходимость для удобства ввода данных создавать поля с автозаполнением (autocomplete field). Примерами таких полей могут быть виджеты для cck-полей Node reference и User...

2

CCK-форматтеры - это куски кода, позволяющие выводить поля так, как мы пожелаем. Часто возникает ситуация, когда существующих форматтеров для...

3

В унисон с новыми веяниями моды, попапы оказались не на шутку популярны среди заказчиков, при этом у последних сформировалось устойчивое убеждение, что мол сайт, в идеале, должен быть в попапе.

4

В предыдущем посте я приводил пример использования Ctools modal API с помощью одной формы. В этом же я рассмотрю использование еще одного мощного инструмента,...

5

Изначально идея #states заключалась в возможности создания динамических форм без написания JavaScript кода как такового. 

Need a quote? Let's discuss the project

Are you looking for someone to help you with your Drupal Web Development needs? Let’s get in touch and discuss the requirements of your project. We would love to hear from you.

Join the people who have already subscribed!

Want to be aware of important and interesting things happening? We will inform you about new blog posts on Drupal development, design, QA testing and more, as well news about Drupal events.

No charge. Unsubscribe anytime