Windows Phone 7-рекомендации по ускорению извлечения данных


У меня есть приложение Windows Phone 7, которое (в настоящее время) вызывает службу OData для получения данных и выбрасывает данные в список. Сейчас он ужасно медленный. Первое, о чем я могу думать, это потому, что OData возвращает намного больше данных, чем мне на самом деле нужно.

Каковы некоторые рекомендации / рекомендации по ускорению выборки данных в приложении Windows Phone 7? Что-нибудь я мог бы сделать в приложении, чтобы ускорить извлечение данных и поставить перед пользователем быстрее?

3 2

3 ответа:

Похоже, у вас уже есть какие-то подсказки о том, за чем гнаться.

Некоторые основные вещи, которые я бы попробовал:

  1. Сделайте ваши HTTP-запросы как можно меньше - если это возможно, извлекайте только те сущности и поля, которые вам абсолютно необходимы.
  2. рассмотрите возможность использования нескольких HTTP-запросов для постепенного извлечения данных вместо извлечения всего за один раз (это, конечно, может замедлить работу приложения, но в целом ускорит его работу)
  3. для больших текстовых переводов, убедитесь, что содержимое архивируется для передачи (это должно происходить на уровне HTTP)
  4. Будьте осторожны, чтобы XAML-рендеринг данных не был слишком раздутым - большая структура XAML, повторяющаяся в списке, может вызвать замедление.
  5. при оптимизации никогда не предполагайте, что вы знаете, где проблема скорости - всегда измеряйте первым!
  6. Будьте осторожны при вставке изображений в список-приложение MS MarketPlace часто кажется заикающимся на моем телефоне - и я думаю, что это вызвано выборкой изображений и процесс рендеринга.

В дополнение к большому списку Стюарта, также рассмотрите формат отправляемых данных.

Проверьте этот пост в блоге Роба Тиффани. В нем рассматривается производительность, основанная на форматах данных. Он был написан специально с учетом WCF, но эти пункты все еще применимы.

Как дополнение к списку Стюарта:

На самом деле есть 3 области - коммуникация, синтаксический анализ, пользовательский интерфейс. Измерьте их отдельно:

  • Делайте только связь с выключенной обработкой.
  • измерьте разбор фиксированной строки в формате ODATA.

Независимо от того, верите вы или нет, это может быть также пользовательский интерфейс.

Например, плохое использование ProgressBar может привести к резкому снижению скорости обработки. (В общем случае вы не должны использовать какие-либо анимации пользовательского интерфейса как объяснено здесь .)

Также убедитесь, что обработка пользовательского интерфейса не блокирует передачу данных.