##Сравнение генерации вёрстки на 1000 компонентах
DOT-шаблонизатор в данном тесте представлен в двух вариантах:
- DOT с эмуляцией шаблонов компонента (просто вставки вёрстки шаблона)
- Компонентная модель WS с использованием DOT в вёрстке
<div class="speed">
{{ for (var i=0; i < 1000; i++) { }}
<component data-component="SBIS3.CONTROLS.SomeComponent">
<option name="caption" value="SomeCaption"></option>
<option name="someoption1" value="SomeCaption"></option>
<option name="someoption2" value="SomeCaption"></option>
<option name="someoption3" value="SomeCaption"></option>
<option name="someoption4" value="SomeCaption"></option>
<option name="someoption5" value="SomeCaption"></option>
<option name="someoption6" value="SomeCaption"></option>
<option name="someoption7" value="SomeCaption"></option>
<option name="someoption8" value="SomeCaption"></option>
<option name="someoption9" value="SomeCaption"></option>
<option name="someoption0" value="SomeCaption"></option>
<option name="someoption11" value="SomeCaption"></option>
<option name="someoption12" value="SomeCaption"></option>
</component>
{{ } }}
</div>
Шаблон комнпонента SBIS3.CONTROLS.SomeComponent
<div class="some class here">
<div class="{{? it.caption }}{{= it.caption }}{{?}}">
<div class="{{? it.someoption1 }}{{=it.someoption1}}{{?}}">
<button class="controls-Button{{? it.primary }} controls-Button__primary{{?}}{{?! it.visible }} ws-hidden{{?}}{{?it.tooltip}}" title="{{=it.tooltip}}"{{?}} {{?!it.enabled}}disabled="disabled"{{?}} type="button">
{{?it.icon}}
<i class="controls-Button__icon js-controls-Button__icon {{=it._iconClass}}"></i>
{{?}}
<span class="controls-Button__text js-controls-Button__text {{?!it.caption}}controls-Button__emptyCaption{{?}}">{{?it.caption}}{{=it.caption}}{{??}} {{?}}</span>
Some words ok <br />
{{= someoption8}}
</button>
{{= someoption3}}
</div>
</div>
</div>
###Шаблон на новом шаблонизаторе (TMPL)
<div class="speed">
<ws:for data="i in 1000">
<component data-component="SBIS3.CONTROLS.SomeComponent"
caption="SomeCaption"
someoption1="someoption1"
someoption2="someoption2"
someoption3="someoption3"
someoption4="someoption4"
someoption5="someoption5"
someoption6="someoption6"
someoption7="someoption7"
someoption8="someoption8"
someoption9="someoption9"
someoption0="someoption0"
someoption11="someoption11"
someoption12="someoption12"
>
</ws:for>
</div>
Шаблон комнпонента SBIS3.CONTROLS.SomeComponent
<div class="some class here">
<div class="{{caption}}">
<div class="{{someoption1}}">
<button class="controls-Button{{primary ? ' controls-Button__primary'}}" title="{{tooltip}}" disabled="{{!enabled ? 'disabled'}}">
<ws:if data="{{_iconClass}}">
<i class="controls-Button__icon js-controls-Button__icon {{_iconClass}}"></i>
</ws:if>
Some words ok <br />
<span class="controls-Button__text js-controls-Button__text{{caption ? ' controls-Button__emptyCaption'}}">{{caption}}</span>
{{someoption8}}
</button>
{{someoption3}}
</div>
</div>
</div>
###Замеры генерации вёрстки на 1000 компонентах
мс | |
---|---|
DOT (с эмуляцией шаблонов компонента) | 7 - 10 |
Компоненты WS | 312 - 315 |
TMPL | 93 - 105 |
TMPL после оптимизации | 33 - 38 |
####Оптимизации
- Линеаризация - 22-30 мс
- Отказ от мёрджа опций - 44-53 мс