Литмир - Электронная Библиотека
Содержание  
A
A

 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

 //Начать с известной даты...

 System.DateTime newDate;

 newDate = System.DateTime.Today;

 changeDayOfTravel_textColumnLookup(ТЕST_CREDIT_CARD, newDate);

 //ДОПУСТИМО ТОЛЬКО ДЛЯ ТЕСТОВОГО КОДА!!!

 //Вызов сборщика мусора в коде ЗАМЕДЛИТ работу вашего приложения!

 System.GC.Collect();

 const int testNumber = 0;

 //Настроить соответствующим образом в зависимости от вида выполняемого теста

 switch (kindOfTest) {

 case testType.textColumnLookup:

  PerformanceSampling.StartSample(testNumber, "Text based Column lookup.");

  break;

 case testType.cachedIndexLookup:

  PerformanceSampling.StartSample(testNumber, "Cached Column Index lookup.");

  break;

 case testType.cachedColumnObject:

  PerformanceSampling.StartSample(testNumber, "Cached Column objects");

  break;

 default:

  throw new Exception("Unknown state!");

 }

 //Выполнить тест!

 for (int testCount = 0; testCount < NUMBER_TEST_ITERATIONS; testCount++) {

  //Передвинуть дату вперед на один день

  newDate = newDate.AddDays(1);

  int numberRecordsChanged = 0;

  //Какой вид теста мы выполняем?

  switch (kindOfTest) {

  case testType.textColumnLookup:

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

   numberRecordsChanged =

    changeDayOfTravel_textColumnLookup(ТЕST_CREDIT_CARD, newDate);

   break;

  case testType.cachedIndexLookup:

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

   numberRecordsChanged =

    changeDayOfTravel_cachedColumnIndex(ТЕST_CREDIT_CARD, newDate);

   break;

  case testType.cachedColumnObject:

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

   //столбцов

   numberRecordsChanged =

    changeDayOfTravel_CachedColumns(TEST_CREDIT_CARD, newDate);

   break;

  }

  //Убедиться в том, что тест выполняется, как и ожидалось...

  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_ textColumnLookup(string creditCardNumber, System.DateTime newTravelDate) {

 int numberRecordsChanged = 0;

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

 System.Data.DataTable dataTable_Customers;

 //НИЗКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Осуществить поиск в таблице, используя

 //сравнение строк!

 dataTable_Customers = m_myDataSet.Tables[TABLE_NAME_PASSENGERINFO];

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

  string currentCreditCard;

  //НИЗКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Осуществить поиск в таблице, используя

  //сравнение строк!

  currentCreditCard = (string)currentCustomerRow[COLUMN_NAME_PASSENGER_CREDIT_CARD];

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

  if (creditCardNumber == currentCreditCard) {

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

   //НИЗКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ: Осуществить поиск столбца, используя

   //сравнение строк!

   System.DateTime currentTravelDate =

    (System.DateTime)currentCustomerRow[COLUMN_NAME_DATE_OF_TRAVEL];

168
{"b":"947732","o":1}