Dziś jest poniedziałek, 13 października 2008 roku (z kalendarza...)

Optymalizacja OPT

Icon

30.04.2005, 18:30

Webmaster

Komentarze (0)

Powrót

Dzisiaj komputer jest już względnie sprawny, więc zabrałem się za zaimplementowanie w Open Power Template optymalizacji zaproponowanej przez Deyv'a. Dotyczy ona instrukcji {include} umieszczanych w pętlach. Wbrew pozorom do przyspieszenia jest tutaj sporo rzeczy. Przede wszystkim normalnie za każdym wywołaniem wykonywana jest pewna ilość operacji dyskowych sprawdzających, czy oryginalny szablon nie uległ zmianie i czy nie trzeba go rekompilować. W teorii, jeżeli raz to sprawdziliśmy, powtarzanie testu kolejne n razy jest zbędne.

Tak też zrobiłem. Obok dotychczasowej metody parsującej: do_parse(), pojawiła się druga, do_include(), dedykowana specjalnie instrukcjom {include}. Różni się ona od pierwowzoru paroma rzeczami. Po pierwsze, nie ma tu kodu odpowiedzialnego za cache'owanie wyjścia HTTP oraz obsługi dyrektywy show_source. Pierwsza zmiana była właściwie niezbędna, by działało ono z tą instrukcją tak, jak należy i prędzej czy później i tak bym ją wprowadził. Na drugą zdecydowałem się ze względów estetycznych :). Jest też parę innych zmian. Otóż nazwa każdego skompilowanego w ten sposób szablonu zapisywana jest w specjalnej tablicy. Przed rozpoczęciem parsowania OPT sprawdza, czy w danym żądaniu dołączał dany plik poprzez {include}. Jeżeli tak - pomija testy istnienia pliku, czy konieczności rekompilacji szablonu. Dało to skryptowi potężnego kopa. Napisałem skrypt testowy, dołączający 80 razy krótki szablonik z treścią "blebleble". Pierwotny wynik przetwarzania to ok. 0,12 sekundy. Po zastosowaniu optymalizacji spadł do 0,06 s.

To jednak nie wszystko. Na wyraźne żądanie programisty OPT może posunąć się jeszcze dalej i dołączyć szablon już na etapie kompilacji, całkowicie eliminując wywołanie do_include(). Wszystko wygląda tak, jakbyśmy mieli tylko jeden szablon. Rozwiązanie to ma parę wad. Przede wszystkim skompilowane szablony mogą zajmować znacznie więcej miejsca na dysku. Drugi problem to niemożność rozpoznania przez OPT zmian w dołączanym szablonie. Jeśli jednak nie przeszkadza to nam, możemy śmiało włączyć pełną optymalizację. Na ww. skrypcie testowym otrzymałem przy jej pomocy najlepszy rezultat: 0,00473 s.

Ad. powyższego paragrafu - OPT optymalizuje tak tylko niektóre {include}'y. Mianowicie muszą one znajdować się w pętli oraz mieć statycznie przypisaną nazwę pliku (określoną już w momencie kompilacji szablonu).

Powrót

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 1 | Serwer wirtualny zapewnia