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

 treeView1.EndUpdate;


 //Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(2);

 System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(2));

}


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

//Код для кнопки "Clear: BeginUpdate"

//Подход, в котором используется метод BeginUpdate

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

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

 //Для повышения корректности тестирования предварительно выполнить

 //операцию сборки мусора

 System.GC.Collect;


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

 PerformanceSampling.StartSample(3, "Clear - Use BeginUpdate");

 treeView1.BeginUpdate;

 treeView1.Nodes.Clear;

 treeView1.EndUpdate;


 //Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(3);

 System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(3));

}


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

//Код для кнопки "Fill: Use Array"

//

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

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

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

 //Очистить массив для создания одинаковых условий тестирования

 if (treeView1.Nodes.Count > 0) {

  treeView1.BeginUpdate;

  treeView1.Nodes.Clear;

  treeView1.EndUpdate;

  treeView1.Update;

 }


 //Для повышения корректности тестирования предварительно выполнить

 //операцию сборки мусора

 System.GC.Collect;


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

 PerformanceSampling.StartSample(4, "Populate - Use Array");


 //Распределить память для нашего массива узлов дерева

 System.Windows.Forms.TreeNode [] newTreeNodes = new System.Windows.Forms.TreeNode[NUMBER_ITEMS];


 //Заполнить массив

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

  newTreeNodes[i] = newSystem.Windows.Forms.TreeNode("TreeItem" + i.ToString);

 }


 //Связать массив с элементом управления

 TreeView treeView1.BeginUpdate;

 treeView1.Nodes.AddRange(newTreeNodes);

 treeView1.EndUpdate;


 //Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(4);

 System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(4));

}

Результаты, полученные с использованием различных методик добавления данных в элемент управления TreeView и их исключения из него, приведены в таблицах 11.1 и 11.2.


Таблица 11.1. Физическое устройство Pocket PC: добавление 800 элементов данных (время в секундах)

Номер тестаНе оптимизированный подходИспользование методов BeginUpdate/EndUpdateИспользование массива
140,78512,48410,388
240,53312,32210,419
340,87813,34311,686
Среднее40,73212,71610,831
Экономия времени по сравнению с базовым значениемБазовое значение (0%)68,78%73,41%
Перейти на страницу:

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

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

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

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

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

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

Роберт Лав

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