Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'Создать экземпляр вспомогательного класса,
'который расчленяет строку на три части
'Это неэкономный способ!
'------------------------------------------
workerClass1 = New WastefulWorkerClass(testArray(idx))
'Если средним словом является "blue", заменить его на "orange"
If (workerClass1.MiddleSegment = "blue") Then
'Заменить средний сегмент
workerClass1.MiddleSegment = "orange"
'Заменить слово
testArray(idx) = workerClass1.getWholeString
End If
Next 'внутренний цикл
Next 'внешний цикл
'Получить время окончания теста
PerformanceSampling.StopSample(0)
MsgBox(PerformanceSampling.GetSampleDurationText(0))
End Sub
Листинг 8.4. Рабочий класс для первого тестового примера
Option Strict On
Imports System
Public Class WastefulWorkerClass
Private m_beginning_segment As String
Public Property BeginSegment As String
Get
Return m_beginning_segment
End Get
Set(ByVal Value As String)
m_beginning_segment = Value
End Set
End Property
Private m_middle_segment As String
Public Property MiddleSegment As String
Get
Return m_middle_segment
End Get
Set(ByVal Value As String)
m_middle_segment = Value
End Set
End Property
Private m_end_segment As String
Public Property EndSegment As String
Get
Return m_end_segment
End Get
Set(ByVal Value As String)
m_end_segment = Value
End Set
End Property
Public Sub New(ByVal in_word As String)
Dim index_segment1 As Integer
'Осуществляем поиск символов подчеркивания ("_") в строке
index_segment1 = in_word.IndexOf("_", 0)
'В случае отсутствия символов "_" все, что нам нужно, это первый сегмент
If (index_segment1 = -1) Then
m_beginning_segment = in_word
m_middle_segment = ""
m_end segment = ""
Return
Else
'Если присутствует символ "_", отсечь его
'Если первым символом является "_", то первым сегментом будет ""
If (index_segment1 = 0) Then
m_beginning_segment = ""
Else
'Первый сегмент
m_beginning_segment = in_word.Substring(0, index_segment1)
End If
'Найти второй символ "_"
Dim index_segment2 As Integer
index_segment2 = in_word.IndexOf("_", index_segment1 + 1)
'Второй символ "_" отсутствует
If (index_segment2 = -1) Then
m_middle_segment = ""
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.5. Тестовый пример, демонстрирующий уменьшение объема памяти, распределяемой для объектов (типичный образец улучшения первоначального варианта реализации интересующей нас функции)
Private Sub Button3_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button3.Click
'Вызвать сборщик мусора, чтобы тест
'начинался с чистого состояния.
'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
'сборщика мусора в программах вручную будут приводить к снижению
'общей производительности приложений!
System.GC.Collect
Поделиться:
Популярные книги
Ну, здравствуй, Герой!
2. Здравствуй, Мир!
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Палач
4. Викс
Фантастика:
фэнтези
7.27
рейтинг книги
Запрети любить
1. Навсегда в моем сердце
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Эволюционер из трущоб. Том 6
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Железный Воин Империи
1. Железный Воин Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мечников. Из доктора в маги
1. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Контуженый
Детективы:
боевики
5.00
рейтинг книги
Чайлдфри
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Точка Бифуркации X
10. ТБ
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Язычник
5. Варяг
Приключения:
исторические приключения
8.91
рейтинг книги
Личник
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Новые горизонты
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Золотой ворон
5. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Искатель 1
1. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00