Результаты, полученные с использованием различных методик добавления данных в элемент управления TreeView и их исключения из него, приведены в таблицах 11.1 и 11.2.
Таблица 11.1. Физическое устройство Pocket PC: добавление 800 элементов данных (время в секундах)
Номер теста
Не оптимизированный подход
Использование методов BeginUpdate/EndUpdate
Использование массива
1
40,785
12,484
10,388
2
40,533
12,322
10,419
3
40,878
13,343
11,686
Среднее
40,732
12,716
10,831
Экономия времени по сравнению с базовым значением
Базовое значение (0%)
68,78%
73,41%
Из табл. 11.1 видно, что экономия времени, достигаемая за счет окружения кода, предназначенного для добавления в элемент управления TreeView и исключения из него данных, вызовами методов BeginUpdate и EndUpdate, составила примерно две трети (68,78%). Наряду с этим, благодаря тому, что мерцание элементов управления вследствие их обновления происходит реже, повышается и привлекательность интерфейса, оцениваемая с позиций конечного пользователя. Использование метода AddRange (столбец "Использование массива") для заполнения данными элемента управления TreeView позволило уменьшить накладные расходы еще на 5%; это улучшение также является ощутимым.
Было довольно-таки неожиданно обнаружить, что использование пары вызовов BeginUpdate и EndUpdate привело не только к значительному увеличению скорости добавления данных в элемент управления TreeView, но и оказало достаточно сильное влияние на скорость их удаления. Результаты, полученные с использованием двух различных подходов для удаления данных из элемента управления TreeView, сравниваются в табл. 11.2.
Таблица 11.2. Очистка 800 элементов данных (время в секундах)
Номер теста
Не оптимизированный подход
Использование методов BeginUpdate/EndUpdate
1
18,791
8,656
2
15,910
8,964
3
16,821
8,516
Среднее
17,174
8,712
Экономия времени по сравнению с базовым значением
Базовое значение (0 %)
49,27 %
Как видно из табл. 11.2, одного лишь окружения кода, предназначенного для удаления данных из элемента управления TreeView, вызовами методов BeginUpdate и EndUpdate оказалось достаточным для того, чтобы достигнуть 50%-ной экономии времени.