Шрифт:
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;
//Какой вид теста мы выполняем?