SAPUI5: влияет ли использование средств форматирования на производительность?

Я работаю над пользовательским приложением SAPUI5, используя ODataModel, и для которого мне нужно выполнить форматирование некоторых полей, которые я буду отображать в элементе управления List.

Мне нужно знать, какой подход хорош, упомянутый ниже, хорош w.r.t. производительность приложения.

1) Стоит ли использовать файл Formatter.js и писать каждый метод для каждого поля форматирования?

Пример -

There are 2 fields which should be formatted before showing in UI and hence 2 formatter function.

2) Перед привязкой модели к списку - выполните форматирование с помощью цикла в каждой строке. Пример -

Loop at OData.
--do formatting here for both the fields 
move data to model.
Endloop.
Bind new model to UI

Есть ли другой способ улучшить производительность, кроме минимизации кода или использования grunt.

Ценю вашу помощь.

Спасибо, Рахул


person Rahul    schedule 10.08.2016    source источник


Ответы (2)


Замена Formatters другими решениями определенно НЕ является отправной точкой при оптимизации производительности, не говоря уже о том, что вы потеряете много удобства, которое ODataModel предоставляет при ручном управлении данными в нем.

Производительность форматирования

В любом случае использование средства форматирования, конечно, менее эффективно, чем предварительное форматирование ваших данных один раз после их загрузки. Средство форматирования будет выполняться при каждом повторном рендеринге вашего элемента управления. Таким образом, вы можете не захотеть выполнять тяжелые вычисления или чрезмерное зацикливание в форматтере, который часто выполняется. Но, учитывая обычное использование форматтеров, вам абсолютно не о чем беспокоиться, или это заметно влияет на работу конечного пользователя. Продолжайте наслаждаться удобством средств форматирования (и взгляните на классную привязку выражений).

Общие вопросы производительности

Для повышения производительности в первую очередь очень важно определить реальное узкое место. Во многих случаях это просто бэкэнд, обычно можно выиграть гораздо больше с гораздо меньшими усилиями. Всегда помните об этом. Оптимизация кода пользовательского интерфейса нелепа, пока основной вызов бэкэнда выполняется, скажем, 3 секунды.

Вещи для улучшения производительности пользовательского интерфейса могут быть следующими:

  • обслуживать SAPUI5 из CDN
  • используйте предварительную загрузку компонентов можно создать с помощью grunt-openui5 или gulp-ui5-preload (я думаю, что он еще не минимизирует XML, поэтому вы можете сделать это дополнительно перед созданием Component-preload)
  • попробуйте уменьшить количество используемых библиотек SAPUI5
  • знайте, какие библиотеки SAPUI5 вы НЕ используете, и, следовательно, удалите их (не забудьте раздел зависимостей в метаданных компонента, соответственно manifest.json)
  • имейте в виду, что sap.ui.layout — это отдельная независимая библиотека (если ее не зарегистрировать, это приведет к большому количеству дополнительных запросов)
  • если вы используете ODataModel, убедитесь, что вы установили useBatch на true (по умолчанию в v2.ODataModel)
  • разумно спроектируйте свой сервис OData (если вы можете на него повлиять)
  • разумно используйте $expands: иногда имеет смысл предварительно загрузить данные $expand в родительскую привязку, которая на самом деле их не использует, например. если вам, скорее всего, понадобятся данные позже
  • подумайте о том, чтобы объединить ваше приложение в качестве нативного приложения и извлечь выгоду из улучшенного кэширования (Kapsel)
  • Проверьте Производительность: ускорьте работу приложения и Проблемы с производительностью
  • сожмите еще несколько байтов и сохраните некоторые запросы, минифицируя/сочетая пользовательские css или другие ресурсы, если у вас есть некоторые

Если вас вообще интересует веб-производительность, я могу порекомендовать книги Стива Содерса.

Я полностью открыт для новых идей по улучшению производительности SAPUI5! Кто угодно?

БР Крис

person cschuff    schedule 11.08.2016

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

Концепция привязки заключается в том, чтобы зациклить вашу модель данных и соответствующим образом обновить пользовательский интерфейс. Гораздо лучше использовать привязку по многим причинам, таким как удобство сопровождения, производительность, отделение уровня данных от уровня представления, оптимизация ядра и многое другое.

person Ran Hassid    schedule 10.08.2016
comment
Спасибо Ран за ответ. Итак, с точки зрения производительности, какой подход следует использовать здесь. - person Rahul; 10.08.2016
comment
Ran добавил пример в мой вопрос - person Rahul; 10.08.2016
comment
используйте привязку и добавьте модуль форматирования как часть вашей привязки. пример можно найти здесь: sapui5.netweaver.ondemand.com/sdk/#docs/guide/ - person Ran Hassid; 10.08.2016
comment
Я знаю, как использовать средство форматирования - мне нужно знать, есть ли 2 поля и 2 функции форматирования, поэтому производительность повлияет или нет - person Rahul; 12.08.2016
comment
Так что, думаю, я не понял вашего вопроса, если вы говорите об улучшении общей производительности UI5 или веб-приложений, то @cschuff уже дал ответ. - person Ran Hassid; 14.08.2016