Zależało mi na utrzymaniu starej funkcjonalności i jako opcję wykorzystanie nowej funkcjonalności oferowanej przez inne template engine.
Co ciekawe przy wykorzystaniu starego mechanizmu replace przy pomocy regexp lub indexof jest wcale niezła podstawowa wydajność template i w zasadzie tym się broni tylko to zabytkowe rozwiązanie - wydajnością.
Jakoś nie mogłem znaleźć obrazków do tego.
Na porównanie wybrałem sobie 2 łatwe do wdrożenia rozwiązania:
http://rythmengine.org/
http://freemarker.org/
W zakresie podstawowym sprawdzałem wydajność zastępowania template zawierającego 1 - n wystąpień tej samej zmiennej w szablonie w formacie odpowiednio dla engine <#var>, $var, ${var}, @var
Wydajność testowałem w 4 wątkach na procesorze i5. Odpowiednio w zestawieniu mam 1, 10, 100, 1000 wystąpień zmiennej
- velocity1 - engine velocity (tu 1.4)
- ksb - StringBuffer z replace przez regexp w formacie Velocity
- ktpl - template lokalnie rozwijane przy pomocy indexOf
- rythm
- freemarker
Tak jak powiedziałem ze względu na ograniczoną funkcjonalność zależało mi na utrzymaniu wydajności podstawowej. Wygląda na to że regexp w podstawowym zakresie daje radę! Przewagę widać tylko przy małych template. Powyżej 10 szanse już się wyrównują, ale przy dużych template indexof wykorzystany w liniowym parsowaniu ktpl jest skuteczny.
Zaskakująco wolno wypadł freemarker
> Velocity
Warunki uproszczone
#if($plural)were#{else}was#end
http://velocity.apache.org/engine/devel/user-guide.html#conditionals
Brak komentarzy:
Prześlij komentarz