Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:

compareTo, 0, _

m_index_2nd_undscore - m_index_1st_undscore - 1)

End Function

Public Function getWholeString As String

'Если полученный средний сегмент не является новым,

'возвратить исходный сегмент

If (m_middleSegmentNew = Nothing) Then

Return m_stringIn

End If

'Создать возвращаемую строку

Return m_stringIn.Substring(0, m index_1st_undscore + 1) + _

m_middleSegmentNew + m_stringIn.Substring( _

m_index_2nd_undscore, _

m_stringIn.Length - m_index_2nd_undscore)

End Function

End Class

Листинг 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)

Поделиться с друзьями: