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

на главную - закладки

Жанры

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

Салмре Иво

Шрифт:

Таблица 7.1. Сравнительные показатели производительности простого алгоритма, выполняемого с возбуждением исключений и без такового

Количество итераций Время выполнения с возбуждением исключений (с) Время выполнения без возбуждения исключений (с) Во сколько раз быстрее работает алгоритм без возбуждения исключений
10000 0,006 2,202 367
10000 0,006 2,201 367
100000 0,061 22,716 372
100000 0,055 22,834 415
100000 0,055 22,995 418

Выполнение используемого в качестве примера приложения на эмуляторе Pocket PC иллюстрирует рис. 7.2.

Рис. 7.2. Пример выполнения приложения, позволяющего оценить влияние обработки исключений на показатели производительности

НА ЗАМЕТКУ

Следует отметить, что поскольку обработка исключений входит в состав базовых средств времени выполнения и отладки .NET Compact Framework и Visual Studio .NET, то производительность приложения может в заметной степени меняться в зависимости от двух обстоятельств

1. Производительность кода, генерирующего исключения, может значительно ухудшаться, если программа выполняется с подключенным отладчиком. Это объясняется тем, что в этом случае среда уведомляется о возбуждении исключений, даже если они перехватываются кодом приложения. Это означает, что алгоритмы, выполнение которых сопровождается возбуждением многочисленных исключений, при подключенном отладчике будут работать очень медленно! Вы не должны забывать об этом на стадиях проектирования и разработки приложения; возбуждение множества исключений может замедлить разработку. Обычно поведение среды разработки не должно вынуждать вас к изменению способа написания кода, но в данном случае вы должны включить в документ проекта дополнительный пункт, в соответствии с которым следует избегать многократного возбуждения исключений в часто выполняемых циклах.

2. Различия в производительности кода, использующего обработку исключений, при его выполнении на эмуляторах и физических устройствах весьма заметны. Чтобы получить наиболее точные данные о том, каким образом возбуждение и обработка исключений влияют на производительность вашего приложения, соответствующие тесты должны выполняться на физических устройствах при отключенном отладчике.

Представленный в листинге 7.4 код следует включить в форму проекта для Pocket PC. Для сборки и запуска приложения необходимо выполнить следующие действия:

1. Запустите Visual Studio .NET (2003 или более позднюю версию) и создайте приложение C# Smart Device Application.

2. Выберите в качестве целевой платформы Pocket PC. (Для вас будет автоматически сгенерирован проект, и на экране появится конструктор форм Pocket PC.)

3. Добавьте в форму перечисленные ниже элементы управления. Возможная схема расположения элементов управления на форме показана на рис. 7.2.

 • TextBox; переименуйте его в textBoxNumberAttempts.

 • Button; переименуйте его в buttonRunNoExceptionCode.

 • Button; переименуйте его в buttonRunExceptionCode.

 • ListBox; оставьте в качестве его имени listBox1.

4. Выполните по отношению к каждой из кнопок следующие действия. Дважды щелкните на кнопке в конструкторе формы. В автоматически сгенерированной и подключенной функции обработчика событий введите один из приведенных ниже кодов с соответствующим именем button<ИмяКнопки>_Click.

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) {

Поделиться:
Популярные книги

Мишень

Коултер Кэтрин
3. Агенты ФБР
Любовные романы:
остросюжетные любовные романы
8.32
рейтинг книги
Мишень

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

Третий Генерал: Том III

Зот Бакалавр
2. Третий Генерал
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Третий Генерал: Том III

Гримуар темного лорда IV

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда IV

Главный рубильник. Расцвет и гибель информационных империй от радио до интернета

Ву Тим
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Главный рубильник. Расцвет и гибель информационных империй от радио до интернета

Кодекс Охотника. Книга VIII

Винокуров Юрий
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII

Кодекс Охотника. Книга ХХХ

Винокуров Юрий
30. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга ХХХ

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Лекарь Империи 4

Карелин Сергей Витальевич
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 4

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Эпоха Опустошителя. Том V

Павлов Вел
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том V

Кодекс Охотника. Книга XXII

Винокуров Юрий
22. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXII