Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 538


> '--------------------------------------------------

> 'Просмотреть элементы массива и

> 'найти те из них, в которых средним словом является

> '"blue". Заменить "blue" на "orange"

> '--------------------------------------------------


> 'Запустить секундомер перед началом выполнения теста

> PerformanceSampling.StartSample(2, "DefferedObjects")


> '-------------------------------------------------------

> 'БОЛЕЕ ЭКОНОМНЫЙ СПОСОБ: Распределить память для объекта

> 'до вхождения в цикл

> '-------------------------------------------------------


> Dim workerClass1 As LessAllocationsWorkerClass

> workerClass1 = New LessAllocationsWorkerClass


> 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.CompareMiddleSegment("blue") = 0) Then

>    'Заменить средний сегмент

>    workerClass1.MiddleSegment = "orange"

>    'Заменить слово

>    testArray(idx) = workerClass1.getWholeString()

>   End If

>  Next 'внутренний цикл

> Next 'внешний цикл

> 'Остановить секундомер!

> PerformanceSampling.StopSample(2)

> MsgBox(PerformanceSampling.GetSampleDurationText(2))

>End Sub

Листинг 8.8. Рабочий класс для третьего тестового примера

>Option Strict On

>Imports System


>Public Class LessAllocationsWorkerClass

>Public WriteOnly Property MiddleSegment() As String

> Set(ByVal Value As String)

>  m_middleSegmentNew = Value

> End Set

>End Property


>Private m_middleSegmentNew As String

>Private m_index_1st_undscore As Integer

>Private m_index_2nd_undscore As Integer

>Private m_stringIn As String


>Public Sub ReuseClass(ByVal in_word As String)

> '----------------------------------------------