Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 587

>    currentCustomerRow(m_IndexOfTestColumn_TravelDate) = _

>     newTravelDate

>    numberRecordsChanged = numberRecordsChanged + 1

>   End If

>  End If

> Next

> Return numberRecordsChanged 'Количество обновленных записей

>End Function


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

>Private Function changeDayOfTravel_CachedColumns( _

> ByVal creditCardNumber As String, _

> ByVal newTravelDate As System.DateTime) As Integer

> Dim numberRecordsChanged As Integer


> 'Найти имя таблицы

> Dim dataTable_Customers As System.Data.DataTable = _

>  m_TableCustomerInfo


> Dim currentCustomerRow As System.Data.DataRow

> For Each currentCustomerRow In dataTable_Customers.Rows

>  Dim currentCreditCard As String

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

>  currentCreditCard = CType( _

>   currentCustomerRow(m_TestColumn_CreditCard), _

>   String)

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

>  If (creditCardNumber = currentCreditCard) Then

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

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

>   Dim currentTravelDate As System.DateTime = CType( _

>    currentCustomerRow(m_TestColumn_TravelDate), _

>    System.DateTime)


>   If (currentTravelDate <> newTravelDate) Then

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

>    currentCustomerRow(m_TestColumn_TravelDate) = _

>     newTravelDate

>    numberRecordsChanged = numberRecordsChanged + 1

>   End If

>  End If

> Next

> Return numberRecordsChanged 'Количество обновленных записей

>End Function


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

>Private Sub buttonRunTest_Click(ByVal sender As Object, _

> ByVal e As System.EventArgs) Handles buttonRunTest.Click

> createDataSet()

> cacheDataSetInfo()


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

> changeDayOfTravel_test(testType.textColumnLookup)


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

> changeDayOfTravel_test(testType.cachedIndexLookup)


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

> changeDayOfTravel_test(testType.cachedColumnObject)

>End Sub

Листинг 14.4. Результаты тестирования производительности при использовании пользовательского формата данных вместо объектов DataSet

>'Определение размерных характеристик теста

>Const DUMMY _ROWS_OF_DATA As Integer = 100

>Const NUMBER_TEST_ITERATIONS As Integer = 500


>Const TABLE_NAME_PASSENGERINFO As String = "CustomerTravelInfo"

>Const TEST_CREDIT_CARD As String = "IvoCard-987-654-321-000"


>Private m_data_creditCards() As String

>Private m_data_names() As String

>Private m_data_travelDates() As System.DateTime