Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

 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)

 '----------------------------------------------

 'Для повторного использования класса необходимо

 'полностью очистить внутреннее состояние

 '----------------------------------------------

 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)

 'В случае отсутствия символов "_" все, что нам нужно, это первый сегмент

  • Читать дальше
  • 1
  • ...
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: