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

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

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

//Определение размерных характеристик теста
const int DUMMY_ROWS_OF_DATA = 100;
const int NUMBER_TEST_ITERATIONS = 500;
const string TABLE_NAME_PASSENGERINFO = "CustomerTravelInfo";
const string TEST_CREDIT_CARD = "IvoCard-987-654-321-000";
string [] m_data_creditCards;
string [] m_data_names;
System.DateTime [] m_data_travelDates;
//-------------------------------------------------------------
//Создает массив данных (вместо использования объектов DataSet)
//-------------------------------------------------------------
private void createDataSet() {
 //=============================================
 //1. Создать пространство для размещения данных
 //=============================================
 m_data_creditCards = new string[DUMMY_ROWS_OF_DATA + 1];
 m_data_names = new string[DUMMY_ROWS_OF_DATA + 1];
 m_data_travelDates = new System.DateTime[DUMMY_ROWS_OF_DATA + 1];
 //----------------------
 //Добавить строки данных
 //----------------------
 System.Text.StringBuilder buildTestString;
 buildTestString = new System.Text.StringBuilder();
 for (int addItemsCount = 0; addItemsCount < DUMMY_ROWS_OF_DATA; addItemsCount++) {
  //Выбрать день отъезда пассажира
  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();
 }
 //Добавить элемент, поиск которого мы хотим выполнить в нашем тесте...
 //Выбрать день для значения в первом столбце данных
 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] = ТЕST_CRE DIT_CARD;
} //Конец функции
//-----------------
//Выполнить тест...
//-----------------
void changeDayOfTravel_test() {
 //Отобразить курсор ожидания
 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
 //Начать с известной даты...
 System.DateTime newDate;
 newDate = System.DateTime.Today;
 changeDayOfTravel_CustomArrays(ТЕST_CREDIT_CARD, newDate);
 //ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ!!!
 //HE СЛЕДУЕТ использовать вызовы сборщика мусора в готовом программном
 //коде. Это ЗАМЕДЛЯЕТ работу приложения.
 System.GC.Collect();
 const int testNumber = 0;
 //Запустить таймер теста
 PerformanceSampling.StartSample(testNumber, "Custom Array implementation");
 //Запустить тест!
 for(int testCount = 0; testCount < NUMBER_TEST_ITERATIONS; testCount++) {
  //Передвинуть дату вперед на один день
  newDate = newDate.AddDays(1);
  int numberRecordsChanged = 0;
  //Просмотреть все имена, используя СТРОКИ
  numberRecordsChanged = changeDayOfTravel_CustomArrays(TEST_CREDIT_CARD, newDate);
  //Убедиться в нормальном выполнении теста...
  if (numberRecordsChanged != 1) {
   System.Windows.Forms.MessageBox.Show("No matching records found. Test aborted!");
   return;
  }
 }
 //Получить время выполнения теста
 PerformanceSampling.StopSample(testNumber);
 //Обычный курсор
 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
 //Отобразить результаты теста
 string runInfo = NUMBER_TEST_ITERATIONS.ToString() + "x" +
  DUMMY_ROWS_OF_DATA.ToString() + ": ";
 System.Windows.Forms.MessageBox.Show(runInfo +
  PerformanceSampling.GetSampleDurationText(testNumber));
}
private int changeDayOfTravel_CustomArrays(string creditCardNumber, System.DateTime newTravelDate) {
 int numberRecordsChanged = 0;
 //Просмотреть каждый элемент массива
 for (int index = 0; index <= DUMMY_ROWS_OF_DATA; index++) {
  string currentCreditCard;
  currentCreditCard = m_data_creditCards[index];
  //Обновить запись при наличии совпадения
  if (creditCardNumber == currentCreditCard) {
   //Изменить дату поездки
   System.DateTime currentTravelDate = m_data_travelDates[index];
   //Увеличить значение счетчика обновлений только при несовпадении данных
   if (currentTravelDate != newTravelDate) {
    m_data_travelDates[index] = newTravelDate;
    numberRecordsChanged++;
   }
  }
 }
 //Возвратить количество обновленных записей
 return numberRecordsChanged;
}
private void buttonRunTest_Click(object sender, System.EventArgs e) {
 createDataSet();
 changeDayOfTravel_test();
}

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

Оглавление статьи/книги

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