Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 8.9. Сравнение эффективности использования строк и класса stringBuilder в алгоритмах
Листинг 8.9. Сравнение эффективности использования строк и класса stringBuilder в алгоритмах
Const COUNT_UNTIL As Integer = 300
Const LOOP_ITERATIONS As Integer = 40
'---------------------------------------------------------
'НЕ ОЧЕНЬ ЭФФЕКТИВНЫЙ АЛГОРИТМ!
'Для имитации создания типичного набора строк используются
'обычные строки
'---------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'Вызвать сборщик мусора, чтобы тест
'начинался с чистого состояния.
'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
'сборщика мусора в программах вручную будут приводить к снижению
'общей производительности приложений!
System.GC.Collect()
Dim numberToStore As Integer
PerformanceSampling.StartSample(0, "StringAllocaitons")
Dim total_result As String
Dim outer_loop As Integer
For outer_loop = 1 To LOOP_ITERATIONS
'Сбросить старый результат
total_result = ""
'Выполнять цикл до максимального значения x_counter, каждый раз
'присоединяя очередную тестовую строку к рабочей строке
Dim x_counter As Integer
For x_counter = 1 To COUNT_UNTIL
total_result = total_result + numberToStore.ToString() + ", "
'Увеличить значение счетчика
numberToStore = numberToStore + 1
Next
Next
PerformanceSampling.StopSample(0)
'Отобразить длину строки
MsgBox("String Length: " + total_result.Length.ToString())
'Отобразить строку
MsgBox("String : " + total_result)
'Отобразить длительность интервала времени, ушедшего на вычисления
MsgBox(PerformanceSampling.GetSampleDurationText(0))
End Sub
'---------------------------------------------------------
'ГОРАЗДО БОЛЕЕ ЭФФЕКТИВНЫЙ АЛГОРИТМ!
'Для имитации создания типичного набора строк используется
'конструктор строк (String Builder)
'---------------------------------------------------------
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
'Вызвать сборщик мусора, чтобы тест
'начинался с чистого состояния.
'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
'сборщика мусора в программах вручную будут приводить к снижению
'общей производительности приложений!
System.GC.Collect()
Dim sb As System.Text.StringBuilder = _
New System.Text.StringBuilder
Dim total_result As String
Dim numberToStore As Integer
PerformanceSampling.StartSample(1, "StringBuilder")
Dim outer_loop As Integer
For outer_loop = 1 To LOOP_ITERATIONS
'Очистить конструктор строк
sb.Length = 0
'Очистить строку со старым результатом
total_result = ""
'Выполнять цикл до максимального значения x_counter, каждый раз
'присоединяя очередную тестовую строку к рабочей строке
Dim x_counter As Integer
For x_counter = 1 To COUNT_UNTIL
sb.Append(numberToStore)
sb.Append(", ")
'Увеличить значение счетчика
numberToStore = numberToStore + 1
Next
'Имитируем выполнение некоторых операций над строкой...
total_result = sb.ToString()
Next
PerformanceSampling StopSample(1)
'Отобразить длину строки
MsgBox("Длина строки: " + total_result.Length.ToString())
'Отобразить строку
MsgBox("String : " + total_result)
'Отобразить длительность интервала времени, ушедшего на вычисления
MsgBox(PerformanceSampling.GetSampleDurationText(1))
End Sub
- Листинг 8.1. Применение отложенной загрузки, кэширования и освобождения графических ресурсов
- Листинг 8.2. Общий код, используемый во всех приведенных ниже вариантах тестов
- Листинг 8.3. Тестовый пример, демонстрирующий неэкономное распределение памяти (типичный первоначальный вариант реализации интересующей нас функции)
- Листинг 8.4. Рабочий класс для первого тестового примера
- Листинг 8.5. Тестовый пример, демонстрирующий уменьшение объема памяти, распределяемой для объектов (типичный образец улучшения первоначального варианта реализации интересующей нас функции)
- Листинг 8.6. Рабочий класс для второго тестового примера
- Листинг 8.7. Тестовый пример, демонстрирующий значительное уменьшение объема памяти, распределяемой для объектов (типичный образец существенной алгоритмической оптимизации первоначального варианта реализации интересующей нас функции)
- Листинг 8.8. Рабочий класс для третьего тестового примера
- Листинг 8.9. Сравнение эффективности использования строк и класса stringBuilder в алгоритмах
- Листинг 8.9. Сравнение эффективности использования строк и класса StringBuilder в алгоритмах
- Сравнение строк
- Инструмент командной строки gbak
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- 3.4. Отношения между классами
- Инструмент командной строки gfix
- Как выделить строку, столбец и ячейки
- Удобная операция объединения строк
- Работа со строками
- 2.2. Современные методы исследования эффективности рекламы
- Преобразование строки в целое: stoi( )
- 8.1.4. Сравнение массивов