ExtJS: Частое использование XTemplate = снижение производительности? - PullRequest
2 голосов
/ 07 декабря 2010

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

Учитывая, что данные будут обновляться часто (по крайней мере, каждую секунду), значительно ли эффективнее обновлять отдельные элементы для полей данных, чем заново генерировать весь 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);
}

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

Спасибо!

Ответы [ 2 ]

6 голосов
/ 07 декабря 2010

Я согласен с @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);
}
3 голосов
/ 07 декабря 2010

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

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

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

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