Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
Результаты,
Таблица 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%-ной экономии времени.