> m_end_segment = in_word.Substring(index_segment2 + 1)
> End If
>End Sub
>'Возвращает все три сегмента, объединенные символами "_"
>Public Function getWholeString() As String
> Return m_beginning_segment + "_" + m_middle_segment + "_" + _
> m_end_segment
>End Function
>End Class
Листинг 8.5. Тестовый пример, демонстрирующий уменьшение объема памяти, распределяемой для объектов (типичный образец улучшения первоначального варианта реализации интересующей нас функции)
>Private Sub Button3_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles Button3.Click
> 'Вызвать сборщик мусора, чтобы тест
> 'начинался с чистого состояния.
> 'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
> 'сборщика мусора в программах вручную будут приводить к снижению
> 'общей производительности приложений!
> System.GC.Collect()
> Dim testArray() As String = Nothing
> '--------------------------------------------------
> 'Просмотреть элементы массива и
> 'найти те из них, в которых средним словом является
> '"blue". Заменить "blue" на "orange"
> 'Запустить секундомер!
> '--------------------------------------------------
> PerformanceSampling.StartSample(1, "LessWasteful")
> '-------------------------------------------------------
> 'БОЛЕЕ ЭКОНОМНЫЙ СПОСОБ: Распределить память для объекта
> 'до вхождения в цикл
> '-------------------------------------------------------
> Dim workerClass1 As LessWastefulWorkerClass
> workerClass1 = New LessWastefulWorkerClass
> Dim outerLoop As Integer
> For outerLoop = 1 To LOOP_SIZE
> 'Присвоить элементам массива значения, которые мы хотим использовать
> 'при тестировании ResetTestArray(testArray)
> Dim topIndex As Integer = testArray.Length -1 Dim idx As Integer
> For idx = 0 To topIndex
> '---------------------------------------------------------
> 'Теперь вместо повторного распределения памяти для объекта
> 'нам достаточно лишь повторно воспользоваться им
> '---------------------------------------------------------
> 'workerClass1 = new WastefulWorkerClass(
> ' testArray(topIndex))
> workerClass1.ReuseClass(testArray(idx))
> 'Если средним словом является "blue", заменить его на "orange"
> If (workerClass1.MiddleSegment = "blue") Then
> 'Заменить средний сегмент
> workerClass1.MiddleSegment = "orange"
> 'Заменить слово
> testArray(idx) = workerClass1.getWholeString()
> End If
> Next ' внутренний цикл
> Next 'внешний цикл
> 'Остановить секундомер!
> PerformanceSampling.StopSample(1)
> MsgBox(PerformanceSampling.GetSampleDurationText(1))
>End Sub
Листинг 8.6. Рабочий класс для второго тестового примера