Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
If (index segment2 = -1) Then
m_end_segment = in_word.Substring(index_segment1 + 1)
Return
End If
'Установить последний сегмент
m_middle_segment = in_word.Substring(index_segment1 + 1, _
index_segment2 - index_segment1 - 1)
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.7.
Тестовый пример, демонстрирующий значительное уменьшение объема памяти, распределяемой для объектов (типичный образец существенной алгоритмической оптимизации первоначального варианта реализации интересующей нас функции)
Private Sub Button5 Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button5.Click
'Вызвать сборщик мусора, чтобы тест
'начинался с чистого состояния.
'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
'сборщика мусора в программах вручную будут приводить к снижению
'общей производительности приложений!
System.GC.Collect
Dim testArray As String = Nothing
'--------------------------------------------------
'Просмотреть элементы массива и
'найти те из них, в которых средним словом является
'"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
Поделиться:
Популярные книги
Идеальный мир для Лекаря 6
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Дракон с подарком
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Темный Патриарх Светлого Рода 6
6. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Падение Твердыни
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Сержант. Назад в СССР. Книга 4
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Измена. Право на сына
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Метка драконов. Княжеский отбор
Фантастика:
фэнтези
5.50
рейтинг книги
На границе тучи ходят хмуро...
1. Александр Агренев
Фантастика:
альтернативная история
9.28
рейтинг книги
Ученичество. Книга 1
1. Государственный маг
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Энфис 2
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Не верь мне
7. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Вечная Война. Книга II
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Неудержимый. Книга III
3. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Энфис 6
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00