Чтение онлайн

ЖАНРЫ

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

5. Введите оставшуюся часть приведенного ниже кода.

6. Установите для свойства MinimizeBox значение FALSE. Это приведет к тому, что во время выполнения приложения в правом верхнем углу формы появится кнопка OK, используя которую легко завершить выполнение приложения; эта возможность оказывается особенно удобной при многократном тестировании формы.

7. Добавьте в проект новый класс, назовите его PerformanceSampling и, предварительно удалив его текущее содержимое, введите в него код, показанный в листинге 7.1.

8. Запустите приложение на физическом устройстве или эмуляторе, нажав для этого клавишу <F5>. Если вы хотите выполнить приложение без подключения отладчика, используйте сочетание клавиш <Ctrl+F5>; именно этот способ рекомендуется использовать в данном примере, поскольку при подключенном отладчике исключения обрабатываются гораздо медленнее.

Листинг 7.4. Сравнение производительности двух алгоритмов, в одном из которых используются исключения, а во втором — нет

//Примечание. В этом примере используется класс PerformanceSampling,

// определенный ранее в этой главе. Убедитесь в том, что

// этот класс включен в проект

//ТЕСТОВАЯ ФУНКЦИЯ:

//Сложить 'n1' и 'n2' и возвратить результат

//в 'n3'

// Возвращаемое значение:

// TRUE: если результат положителен

// FALSE: если результат отрицателен

bool returnFalseIfLessThanZero_Add2Numbers(int n1, int n2, out int n3) {

n3 = n1 + n2;

//Результат меньше 0?

if (n3 < 0) {

return false;

}

return true;

}

//===========================================================

// ТЕСТОВАЯ ФУНКЦИЯ:

//

//Сложить 'n1' и 'n2' и возвратить результат

//в 'n3'

//

//Если 'n3' меньше 0, то функция ПЕРЕДАЕТ УПРАВЛЕНИЕ ОБРАБОТЧИКУ ИСКЛЮЧЕНИЙ.

//B противном случае возвращается TRUE

//===========================================================

bool exceptionIfLessThanZero_Add2Numbers(int n1, int n2, out int n3) {

n3 = n1 + n2;

//Результат меньше 0?

if (n3 < 0) {

throw new Ехсерtion("Результат меньше 0!");

}

return true;

}

//===========================================================

//Осуществляет многократные вызовы простой функции и

//измеряет общее время выполнения

//

//Вызываемая функция НЕ приводит к возбуждению исключений

//===========================================================

private void buttonRunNoExceptionCode_Click(object sender, System.EventArgs e) {

const int TEST_NUMBER = 0;

int numberIterations;

numberIterations = System.Convert.ToInt32(textBoxNumberAttempts.Text);

//Отобразить количество итераций, которые предстоит выполнить

listBox1.Items.Add("=>" + numberIterations.ToString + " итераций");

int count_SumLessThanZero;

int dataOut;

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

//Запустить таймер

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

PerformanceSampling.StartSample(TEST_NUMBER, "Исключения отсутствуют");

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

//Выполнить цикл, в котором осуществляется вызов функции

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

count_SumLessThanZero = 0;

bool sumGreaterThanZero;

for(int i = 0; i < numberIterations; i++) {

//=========================

//Вызвать тестовую функцию!

//=========================

sumGreaterThanZero = returnFalseIfLessThanZero_Add2Numbers(-2, -3, outdataOut);

if (sumGreaterThanZero == false) {

count_SumLessThanZero++;

}

} //конец цикла

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

//Остановить таймер

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

PerformanceSampling.StopSample(TEST_NUMBER);

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

//Показать результаты пользователю

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

if (count_SumLessThanZero == numberIterations) {

System.Windows.Forms.MessageBox.Show("Тест выполнен");

listBox1.Items.Add(PerformanceSampling.GetSampleDurationText(TEST_NUMBER));

} else {

System.Windows.Forms.MessageBox.Show("При выполнении теста возникали осложнения");

}

}

//конец функции

//===========================================================

Поделиться с друзьями: