2010-12-07 7 views
2

У меня есть панель ExtJS, которая отображает несколько бит данных и должна часто обновляться. Например, панель, отображающая текущие рыночные цены для DOW, NYSE, NASDAQ и т. Д.ExtJS: Частота использования XTemplate = производительность?

Учитывая, что данные будут часто обновляться (по крайней мере каждую секунду), значительно повысить эффективность обновления отдельных элементов для поля данных или повторное генерирование всего HTML с помощью XTemplate каждый раз?

Например, если я не повторно в XTemplate это может выглядеть следующим образом:

update: function(marketData) { 
    Ext.get('nasdaq-market-price-div-id').update(marketData.nasdaqPrice); 
    Ext.get('nyse-market-price-div-id').update(marketData.nysePrice); 
    //Repeat for all fields... 
} 

По сравнению с с использованием XTemplate каждый раз, как это:

update: function(marketData) { 
    var tpl = new XTemplate('<div>{nasdaqPrice}</div><div>{nysePrice}</div>'); 
    var html = tpl.applyTemplate(marketData); 
    Ext.get('market-data-div-id').update(html); 
} 

I например, используя XTemplate, потому что он позволяет мне отделить HTML (в отдельном файле, на самом деле) и помогает с читабельностью кода/ремонтопригодностью. Однако, знает ли кто-нибудь, есть ли непомерно высокая производительность, повторно применяя шаблон каждый раз? Я предполагаю, что есть, но я надеюсь, что смогу получить авторитетный ответ от кого-то «в курсе».

Спасибо!

ответ

3

Не авторитарный вообще, но я думаю, что вы, скорее всего, будете оптимизировать преждевременно. Метод без X-шаблона, вероятно, несколько менее эффективен, но есть ли у вас какие-либо причины для ухода?

Отсутствие описания какого-либо нежелательного поведения, похоже, что вы беспокоитесь о проблеме, которая не существует сейчас и, скорее всего, никогда не будет существовать в будущем.

Держите свой код в чистоте, пока у вас нет настоящей, настоящей причины, чтобы сделать его уродливым ради производительности.

+0

Спасибо за ввод - определенно действительные баллы. В этом случае фактический шаблон гораздо более существенный (несколько строк HTML, с не менее чем 10 заполнителями); мой упрощенный пример был просто предназначен для того, чтобы понять эту идею. Предполагая, что XTemplates работают, выполняя какую-то операцию поиска и замены, я был обеспокоен тем, что делать это на действительно большой строке не реже одного раза в секунду может быть значительно менее эффективным, чем просто выбирать DOM и заменять отдельные элементы. Во всяком случае, очень полезно получить ваши мысли - спасибо. – 2010-12-07 18:29:36

6

Я согласен с @timdev - XTemplate должен быть в порядке (и очень быстро BTW). Тем не менее, я бы не стал создавать XTemplate с нуля каждый раз. Я бы сделал что-то еще вот так:

update: function(marketData) { 
    // assuming that this is a class or some appropriate scope 
    if(!this.PriceTpl){ 
     this.PriceTpl = new XTemplate('<div>{nasdaqPrice}</div><div>{nysePrice}</div>'); 
     this.PriceTpl.compile(); 
    } 
    this.PriceTpl.overwrite('market-data-div-id', marketData); 
} 
+0

+1 - Я тоже собирался это выразить в своем ответе, а потом забыл об этом. – timdev 2010-12-07 18:20:40

Смежные вопросы