Швидке порівняння Drupal 6, Drupal 7 та Pressflow за допомогою XHprof

06.05.2011
Brief comparison of Drupal 6, Drupal 7 and Pressflow with the help of XHprof
Автор:

Наведені нижче звіти не несуть практичної цінності, оскільки в реальних умовах (модулі встановлено, контент набитокористувачі зареєстровані і т.д.) результати будуть зовсім інші. Тому дана стаття просто наочно показує роботу профайлера...

Для демонстрації я встановив з збірки CMF 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))); 

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

В нашому тесті ми отримали наступні результати (клікабільно):

             Drupal 6                                    Drupal 7                                Pressflow

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

             Drupal 6                                      Drupal 7                               PressFlo

Дані графічного інтерфейсу краще використовувати у випадку профілювання невеликої ділянки коду.

Висновки

Як бачимо, найкращі результати показав Pressflow (середній час генерації сторінки 109 мілісекунд), на другому місці практично без відриву - Drupal 6.20 (114 мс) і далеко на третьому місці Drupal 7.0 (238 мс).

Хоча, насправді, в бойовому режимі Pressflow покаже набагато кращі результати в порівнянні з базовим Друпалом.

Також цікавий факт - з графічних звітів видно, що в 7-му Друпалі немає "критичних" точок (тобто відсутні червоні елементи).

Так, експеримент повторювався тричі на різних серверах і Drupal 7 всюди з більш як подвійним відривом позаду...

Голосів: 1 Рейтинг: 5

Також по темі

1

Інколи виникає необхідність для зручності вводу даних створити поле з автозапоненням (autocomplete field). Прикладами таких полів можуть бути віджети для cck-полів Node reference i User reference...

2

У сфері ІТ технологій розробникам важливо не тільки продемонструвати свої вміння та навички, а й вміти вдосконалювати їх. 

3

ССК-форматери - це частини коду, і вони дозволяють виводити поля так, як нам заманеться. Часто виникає ситуація, коли існуючих форматерів для виконання тієї...

4

Досить часто виникає необхідність реалізувати сайт із підтримкою мультимовності - можливості перекладу вмісту сайта на різні мови, де переклад на ту чи іншу мову здійснює модератор сайту. Проте...

5

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

Subscribe to our blog updates