m_IndexOfTestTable = m_myDataSet.Tables.IndexOf(TABLE_NAME_PASSENGERINFO);

 //------------------------------------------

 //Итерировать по всем столбцам нашей таблицы

 //и кэшировать индексы нужных столбцов

 //------------------------------------------

 m_TableCustomerInfo = m_myDataSet.Tables[m_IndexOfTestTable];

 int dataColumnCount = m_TableCustomerInfo.Columns.Count;

 System.Data.DataColumn myColumn;

 for (int colIdx = 0; colIdx < dataColumnCount;) {

  myColumn = m_TableCustomerInfo.Columns[colIdx];

  //Предпринимать поиск, только если это еще не сделано

  if (m_IndexOfTestColumn_CreditCard == INVALID_INDEX) {

   //Проверить, совпадает ли имя

   if (myColumn.ColumnName == COLUMN_NAME_PASSENGER_CREDIT_CARD) {

    //Кэшировать индекс

    m_IndexOfTestColumn_CreditCard = colIdx;

    //Кэшировать столбец

    m_TestColumn_CreditCard = myColumn;

    goto next_loop_iteration; //Опустить другие операции сравнения...

   } //Endif: сравнение строк

  } //Endif

  if (m_IndexOfTestColumn_TravelDate == INVALID_INDEX) {

   //Проверить, совпадает ли имя

   if (myColumn.ColumnName == COLUMN_NAME_DATE_OF_TRAVEL) {

    //Кэшировать индекс

    m_IndexOfTestColumn_TravelDate = colIdx;

    //Кэшировать столбец

    m_TestColumn_TravelDate = myColumn;

    goto next_loop_iteration; //Опустить другие операции сравнения.

   } //Endif: сравнение строк

  } //Endif

next_loop_iteration:

  colIdx++;

 }

 m_indexesLookedUp =true;

}

//--------------

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

//--------------

void changeDayOfTravel_test(testType kindOfTest) {

 //Отобразить курсор ожидания

 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;

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

Перейти на страницу:

Похожие книги