Skip to content

Instantly share code, notes, and snippets.

@calacitizen
Last active April 26, 2016 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calacitizen/eabe8bb516cd9380c180e5486f9573d6 to your computer and use it in GitHub Desktop.
Save calacitizen/eabe8bb516cd9380c180e5486f9573d6 to your computer and use it in GitHub Desktop.
Engines compare table.

##Сравнение генерации вёрстки на 1000 компонентах

DOT-шаблонизатор в данном тесте представлен в двух вариантах:

  1. DOT с эмуляцией шаблонов компонента (просто вставки вёрстки шаблона)
  2. Компонентная модель WS с использованием DOT в вёрстке

Шаблон в рамках компонентной модели WS

<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}}{{??}}&nbsp;{{?}}</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

####Оптимизации

  1. Линеаризация - 22-30 мс
  2. Отказ от мёрджа опций - 44-53 мс
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment