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

 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;


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

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

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

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT