Книга: Программирование мобильных устройств на платформе .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

Оглавление книги

Оглавление статьи/книги

Генерация: 1.016. Запросов К БД/Cache: 0 / 3
поделиться
Вверх Вниз