Книга: Программирование мобильных устройств на платформе .NET Compact Framework

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

Листинг 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
'-------------------------------------------------------------
'Создает массив данных (вместо использования объектов DataSet)
'-------------------------------------------------------------
Private Sub createDataSet()
 '=============================================
 '1. Создать пространство для размещения данных
 '=============================================
 ReDim m_data_creditCards(DUMMY_ROWS_OF_DATA)
 ReDim m_data_names(DUMMY_ROWS_OF_DATA)
 ReDim m_data_travelDates(DUMMY_ROWS_OF_DATA)
 '----------------------
 'Добавить строки данных
 '----------------------
 Dim buildTestString As System.Text.StringBuilder
 buildTestString = New System.Text.StringBuilder
 Dim addItemsCount As Integer
 For addItemsCount = 0 To DUMMY_ROWS_OF_DATA
  'Выбрать день отъезда пассажира
  m_data_travelDates(addItemsCount) = _
   System.DateTime.Today.AddDays(addItemsCount)
  '---------------------
  'Выбрать имя пассажира
  '---------------------
  'Очистить строку
  buildTestString.Length = 0
  buildTestString.Append("TestPersonName")
  buildTestString.Append(addItemsCount)
  m_data_names(addItemsCount) = buildTestString.ToString()
  '-------------------------------------------------------
  'Связать с пассажиром текстовый номер кредитной карточки
  '-------------------------------------------------------
  'Строка значения третьего столбца набора данных
  buildTestString.Length = 0
  buildTestString.Append("IvoCard-000-000-0000-")
  buildTestString.Append(addItemsCount)
  m_data_creditCards(addItemsCount) = _
   buildTestString.ToString()
 Next
 'Добавить элемент, поиск которого мы хотим выполнить в нашем тесте.
 'Выбрать день для значения в первом столбце данных
 m_data_travelDates(DUMMY_ROWS_OF_DATA) = _
  System.DateTime.Today
 'Строка для второго столбца данных
 m_data_names(DUMMY_ROWS OF DATA) = "Ms. TestPerson"
 'Строка с идентификатором кредитной карточки
 m_data_creditCards(DUMMY_ROWS_OF_DATA) = TEST_CREDIT_CARD
End Sub
'---------------
'Выполнить тест.
'---------------
Sub changeDayOfTravel_test()
 'Отобразить курсор ожидания
 System.Windows.Forms.Cursor.Current = _
  System.Windows.Forms.Cursors.WaitCursor
 'Начать с известной даты.
 Dim newDate As System.DateTime newDate = System.DateTime.Today
 changeDayOfTravel_CustomArrays(TEST_CREDIT_CARD, newDate)
 'ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ!!!
 'HE СЛЕДУЕТ использовать вызовы сборщика мусора в готовом программном
 'коде. Это ЗАМЕДЛЯЕТ работу приложения.
 System.GC.Collect()
 Const testNumber As Integer = 0
 'Запустить таймер теста
 PerformanceSampling.StartSample(testNumber, "Custom Array implementation")
 'Запустить тест!
 Dim testCount As Integer
 For testCount = 1 To NUMBER_TEST_ITERATIONS
  'Передвинуть дату вперед на один день
  newDate = newDate.AddDays(1)
  Dim numberRecordsChanged As Integer
  'Просмотреть все имена, используя СТРОКИ
  numberRecordsChanged = _
   changeDayOfTravel_CustomArrays(ТЕST_CREDIT_CARD, newDate)
  'Убедиться в нормальном выполнении теста
  If (numberRecordsChanged <> 1) Then
   MsgBox("No matching records found. Test aborted!")
   Return
  End If
 Next
 'Получить время выполнения теста
 PerformanceSampling.StopSample(testNumber)
 'Обычный курсор
 System.Windows.Forms.Cursor.Current = _
  System.Windows.Forms.Cursors.Default
 'Отобразить результаты теста
 Dim runInfo As String = NUMBER_TEST_ITERATIONS.ToString() + _
  "x" + DUMMY_ROWS_OF_DATA.ToString() + ": " MsgBox(runInfo + _
  PerformanceSampling.GetSampleDurationText(testNumber))
End Sub
Private Function changeDayOfTravel_CustomArrays( _
 ByVal creditCardNumber As String, ByVal newTravelDate _
 As System.DateTime) As Integer
 Dim numberRecordsChanged As Integer
 'Просмотреть каждый элемент массива
 Dim index As Integer
 For index = 0 To DUMMY_ROWS_OF_DATA
  Dim currentCreditCard As String
  currentCreditCard = m_data_creditCards(index)
  'Обновить запись при наличии совпадения
  If (creditCardNumber = currentCreditCard) Then
   'Изменить дату поездки
   Dim currentTravelDate As System.DateTime = _
    m_data_travelDates(index)
   'Увеличить значение счетчика обновлений только при несовпадении данных
   If (currentTravelDate <> newTravelDate) Then
    m_data_travelDates(index) = _
     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()
 changeDayOfTravel_test()
End Sub

Оглавление книги


Генерация: 0.048. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз