Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
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)
'----------------------------------------------
'Для повторного использования класса необходимо
'полностью очистить внутреннее состояние
'----------------------------------------------
m_index_1st_undscore = -1
m_index_2nd_undscore = -1
m_middleSegmentNew = Nothing
m_stringIn = in_word 'Это не приводит к созданию копии строки
'Осуществляем поиск символов подчеркивания ("_") в строке
m_index_1st_undscore = in_word.IndexOf("_", 0)
'В случае отсутствия символов "_" все, что нам нужно, это первый сегмент
If (m_index_1st_undscore = -1) Then
Return
End If
'Найти второй символ "_"
m_index_2nd_undscore = in_word.IndexOf("_", _
m_index_1st_undscore + 1)
End Sub
Public Function CompareMiddleSegment(ByVal compareTo As String) As Integer
'В случае отсутствия второго символа "_" отсутствует и средний сегмент
If (m_index_2nd_undscore < 0) Then
'Если мы сравниваем с пустой строкой, то это означает
'совпадение
If ((compareTo = Nothing) OrElse (compareTo = "")) Then
Return 0
End If
Return -1
End If
'Сравнить средний сегмент с первым и вторым сегментами
Return System.String.Compare(m_stringIn, m_index_1st_undscore + 1, _
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)
'Отобразить длительность интервала времени, ушедшего на вычисления
Поделиться:
Популярные книги
Хозяин Стужи 7
7. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Княжья Русь
6. Варяг
Приключения:
исторические приключения
9.04
рейтинг книги
На границе империй. Том 10. Часть 10
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Я снова граф. Книга XI
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Хозяин Стужи 5
5. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
6.60
рейтинг книги
Лекарь Империи 5
5. Лекарь Империи
Фантастика:
городское фэнтези
аниме
героическая фантастика
попаданцы
5.00
рейтинг книги
Недотепа
Фантастика:
фэнтези
5.80
рейтинг книги
Точка Бифуркации III
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Московское золото или нежная попа комсомолки. Часть Вторая
2. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Мл. сержант. Назад в СССР. Книга 3
3. Второй шанс
Фантастика:
альтернативная история
6.40
рейтинг книги
Око василиска
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Вперед в прошлое!
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Апокриф
10. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
На границе империй. Том 7
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75