Anti DevBlog

Pariodia blogowania, w konwencji psycho devbloga.

Porównanie szybkości Smarty i Template Lite

Jednym z głównych argumentów przeciwników systemów szablonów jest ich powolność i spore rozmiary dodatkowego kodu, który należy dołączyć do projektu. Głównie w ogień krytyki trafia Smarty, który przez ostatnie lata stał sie niemal nieformalnym standardem, oferując bardzo szeroki wachlarz funkcjonalności i dość dobrą szybkość.

Powstała grupa osób, która niechcąc odrzucać „standardu” Smarty na rzecz dużo uboższych lecz ponoć szybszych (stwierdzenie tego wymagałoby dogłębnych testów) rozwiązań szablonowych, postanowiła stworzyć uproszczoną (pozbawioną niepotrzebnej funkcjonalności) oraz poprawioną wersję Smarty, która nazwali Template Lite (wcześniej projekt nosił nazwę Smarty Lite).

Twórcy Template Lite głoszą nowinę, że ich rozwiązanie jest dużo szybsze, mniejsze, zgrabniejsze etc. Postanowiłem porównać szybkość najnowszych dostępnych wersji Smarty 2.6.18 i Template Lite 2.10 bez zagłębiania się w szczegóły różnic implementacji funkcjonalności oraz bez dodatkowej optymalizacji konfiguracji,  używając plików jak zostały dostarczone w archiwum.

Procedura testowa nie zmieniła się od czasu napisania artykułów o systemach szablonów (szczegółowa metodologia) , natomiast po tych 5 latach uległa zmianie platforma sprzętowa i programowa. Testy zostały wykonane na niewiele obciążonym serwerze wyposażonym w Athlon 64 3700+, 2 GB RAM, 2 dyski  320 GB  spięte w RAID 1, napędzanym przez system operacyjny FreeBSD 6.2 AMD 64 z PHP 5.2.3 pracującym jako fastcgi oraz serwerem HTTP Lighttpd. Dodatkowo jako akcelerator PHP został użyty Xcache 1.2.0 (wyniki z włączonym Xcache zostały zaprezentowane w kolorze zielonym, a szary kolor prezentuje czyste PHP, bez włączonego Xcache). Szybkość testowana była za pomocą Apache Benchmark 2.0.40-dev.

Wyniki testów

Jak widać Template Lite jest rzeczywiście szybsze, jeśli nie stosujemy akceleratora (opcode cache) PHP (Xcache wyłączony) natomiast przegrywa znacznie, jeśli taki program używamy. Raczej trudno w dzisiejszych czasach znaleźć dobry hosting, który by działał na czystym PHP.

Być może coś nie tak ustawiłem w konfiguracji Template Lite, że wypadł tak blado, do artykułu dołączam pełne archiwum zawierające Smarty, Template Lite oraz pliki testowe (test1.php i test2.php) znajdujące się w podkatalogach demo/ każdego z systemów.

Zwycięzcą jest? 

Tak więc werdykt może być tylko jeden zostaje przy Smarty, chyba, że czytelniku znasz szybszy mechanizm oferujący choć połowę funkcjonalności Smarty?

Jako ciekawostkę dodam, że w przypadku gdy Xcache był włączony pierwsze wygenerowanie strony przy skasowanych skompilowanych szablonach, dla Smarty trwało 6 razy dłużej niż dla Template Lite. Jednak ten wynik był odrzucany (zgodnie z metodologią), później Smarty był nie do pobicia.

Comments

  1. Sierpień 4th, 2007 | 12:53

    Witam. Przeglądnąłem skrypty których używałeś do testu i zastanawia mnie dlaczego nie przypisywałeś wartości do znaczników podająć je w tablicy, tylko za każdym razem wywoływałeś metodę assign. Przepisze te skrypty i zrobie identyczny test na najnowszych wersjach Smarty i Template Lite, oczywiście nie omieszkam podzielić się wynikami 🙂 Pozdrawiam.

  2. Adi
    Sierpień 4th, 2007 | 13:14

    Z dwóch powodów:
    1. Zgodności z testem wydajności systemów szablonowych, który zrobiłem w 2002 roku http://ivpro.net/szablony.php
    Skrypty testowe się nie zmieniły.
    2. Test miał właśnie pokazać jak się systemy szablonów zachowują ze średnia ilościa assignów (dość popularne zastosowanie) oraz w drugim teście z tablicami. Oczywisćie, że można przekazać dane w testach w jednej tablicy ale typowe w rzeczywistych projektach jest przekazywanie w kilku znacznikach (tablicowych czy nie).
    Trzeba zauważyć, że wszystkie testowane systemy szablonów miały równe szanse, porównywalne warunki testu i kod nie był specjalnie dopasowywany, do specyfiki systemu.

    A czy na wydajność znacząco wpłynie zamknięcie wszystkiego w jednej tablicy (i odwoływanie asocjacyjne), nie wiem, pewnie trochę tak.

    Dziękuje za komentarz i życze owocnych testów.

  3. Sierpień 5th, 2007 | 13:32

    Oto test o którym mówiłem:
    http://dev.inetive.pl/benchmarks/smarty_vs_template_lite/

    Potwierdził on tylko, że jeśli używamy jakiegoś acceleratora PHP, Smarty jest szybsze.

    Pozdrawiam.

  4. Adi
    Sierpień 5th, 2007 | 14:11

    Bardzo ładny test. Cieszę się, że wyniki mamy zbieżne. Choć nie dowiedzieliśmy się czy jest różnica wydajności
    pomiędzy wieloma assignami, a jednym.
    Miejmy nadzieję, że Template Lite się będzie dalej poprawiał i może kiedyś dogoni Smarty pracujące z acceleratorem. Konkurencja, ze strony kilku niezależnych systemów szablonów mogłaby pozytywnie wpłynąć na rozwój samego Smarty. Można by pomyśleć o całkowitym przepisaniu Smarty na PHP 5.2.x i nowsze (bez wstecznej kompatybilności) i wydaniu go pod numerem 3.0.

Leave a reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image

buy celexa online no prescription order viagra generic