Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 534


> 'Возвратить полужирный шрифт

> Return s_boldFont

>End Function


>'-----------------------------------------------------

>'Эта функция позволяет осуществлять доступ

>'к находящемуся в кэш-памяти объекту imageAttributes,

>'который мы используем для изображений с прозрачностью

>'-----------------------------------------------------

>Private Shared Function g_GetTransparencyImageAttribute() As _

> System.Drawing.Imaging.ImageAttributes

> 'Если объект не существует, создать его

> If (s_ImageAttributeIs Nothing) Then

>  'Создать атрибут изображения

>  s_ImageAttribute = _

>   New System.Drawing.Imaging.ImageAttributes

>  s_ImageAttribute.SetColorKey(System.Drawing.Color.White, _

>   System.Drawing.Color.White)

> End If


> 'Возвратить его

> Return s_ImageAttribute

>End Function


>End Class

Листинг 8.2. Общий код, используемый во всех приведенных ниже вариантах тестов

>'Желаемое число повторений теста

>Const LOOP_SIZE As Integer = 8000

>'---------------------------------------------------------

>'Эта функция переустанавливает содержимое нашего тестового

>'массива, что обеспечивает возможность многократного

>'выполнения тестового алгоритма

>'---------------------------------------------------------

>Private Sub ResetTestArray(ByRef testArray() As String)

> If (testArray Is Nothing) Then

>  ReDim testArray(6)

> End If

> testArray(0) = "big_blue_duck"

> testArray(1) = "small_yellow_horse"

> testArray(2) = "wide_blue_cow"

> testArray(3) = "tall_green_zepplin"

> testArray(4) = "short_blue_train"

> testArray(5) = "short_purple_dinosaur"

>End Sub

Листинг 8.3. Тестовый пример, демонстрирующий неэкономное распределение памяти (типичный первоначальный вариант реализации интересующей нас функции)

>Private Sub Button2_Click(ByVal sender As System.Object, _

> ByVal e As System.EventArgs) Handles Button2.Click

> 'Вызвать сборщик мусора, чтобы быть уверенными в том, что

> 'тест начнется с чистого состояния.

> 'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы

> 'сборщика мусора в программах вручную будут приводить к снижению

> 'общей производительности приложений!

> System.GC.Collect()

> Dim testArray() As String = Nothing


> '--------------------------------------------------

> 'Просмотреть элементы массива и

> 'найти те из них, в которых средним словом является

> '"blue". Заменить "blue" на "orange"

> 'Запустить секундомер для нашего теста!

> '--------------------------------------------------

> PerformanceSampling.StartSample(0, "WastefulWorkerClass")

> Dim workerClass1 As WastefulWorkerClass

> Dim outerLoop As Integer

> For outerLoop = 1 To LOOP_SIZE

>  'Присвоить элементам массива значения, которые мы хотим использовать