Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

//ЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать кэшированный индекс

//столбца!

currentCustomerRow[m_IndexOfTestColumn_TravelDate] = newTravelDate;

numberRecordsChanged++;

}

}

}

return numberRecordsChanged; //Количество обновленных записей

}

//ФУНКЦИЯ, ОБЛАДАЮЩАЯ НАИЛУЧШЕЙ ПРОИЗВОДИТЕЛЬНОСТЬЮ

private int changeDayOfTravel_CachedColumns(string creditCardNumber, System.DateTime newTravelDate) {

int numberRecordsChanged = 0;

//Найти имя таблицы

System.Data.DataTable dataTable_Customers = m_TableCustomerInfo;

foreach (System.Data.DataRow currentCustomerRow in dataTable_Customers.Rows) {

string currentCreditCard;

//НАИЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать кэшированный индекс столбца!

currentCreditCard =

(string)currentCustomerRow[m_TestColumn CreditCard];

//Проверить, совпадает ли номер кредитной карточки...

if (creditCardNumber == currentCreditCard) {

//Изменить дату отъезда

//НАИЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать кэшированный индекс столбца!

System.DateTime currentTravelDate =

(System.DateTime)currentCustomerRow[m_TestColumn_TravelDate];

if (currentTravelDate != newTravelDate) {

//НАИЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать кэшированный индекс

//столбца!

currentCustomerRow[m_TestColumn TravelDate] = newTravelDate;

numberRecordsChanged++;

}

}

}

return numberRecordsChanged; //Количество обновленных записей

}

//Событие щелчка на кнопке

private void buttonRunTest_Click(object sender, System.EventArgs e) {

createDataSet;

cacheDataSetInfo;

//НИЗКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать поиск по строкам

changeDayOfTravel_test(testType.textColumnLookup);

//ЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать поиск по целочисленным индексам

changeDayOfTravel_test(testType.cachedIndexLookup);

//НАИЛУЧШАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Использовать поиск по объектам столбцов

changeDayOfTravel_test(testType.cachedColumnObject);

}

В каких случаях не следует использовать объекты ADO.NET DataSet

Если данные мобильного приложения большей частью применяются только для чтения, если приходится хранить большие объемы данных в памяти или если между данными существуют сравнительно простые отношения, то стоит подумать о привлечении пользовательской модели управления данными. Объекты ADO.NET DataSet можно эффективно реализовать, но предлагаемая ими модель управления данными является универсальной. Можно добиться существенного выигрыша в объеме занимаемой памяти и производительности, создав специализированную модель данных, которая наилучшим образом соответствует вашим потребностям. Ключевым фактором эффективного использования памяти является уменьшение количества объектов, которые должны размещаться для хранения ваших данных; как правило, чем меньше объектов, тем меньше нагрузка на память и тем выше производительность.

В табл. 14.2 и листинге 14.4 представлены результаты использования оптимизированного пользовательского формата для хранения строк данных. Тестовый код, приведенный в листинге 14.4, выполняет ту же задачу, что и код из листинга 14.3, но вместо объектов ADO.NET DataSet в нем используется простой типизированный массив данных. От такой замены производительность приложения выигрывает в двух отношениях:

1. Быстродействие. Как видно из табл. 14.2, применение пользовательского формата данных позволило уменьшить время выполнения приложения до 38% того времени, которое было зафиксировано для решения, базирующегося на ADO.NET с использованием текстового индекса. Сравнение с результатом, достигнутым в оптимизированном варианте поиска, в котором использовался объект DataColumn, свидетельствует о сокращении времени выполнения почти в два раза (12,32/23,54=52,3%).

2. Снижение нагрузки на память. Поскольку в решении, основанном на пользовательском формате данных, для хранения данных требуется лишь минимальное количество объектов, а накладные расходы, связанные с объектами ADO.NET DataSet, отсутствуют, наше приложение предъявляет к памяти менее жесткие требования. Это означает, что при прочих равных условиях объем работы по сборке мусора уменьшается, а рабочее пространство для кода приложения увеличивается. Хотя этот результат и не отражен в таблице, он положительно влияет на общую производительность приложения.

  • Читать дальше
  • 1
  • ...
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: