Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'----------------------------------------
'Эта функция позволяет получить доступ
'к белому перу, находящемуся в кэш-памяти
'----------------------------------------
Private Shared Function g_GetWhitePen As System.Drawing.Pen
'Если перо еще не существует, создать его
If (s_whitePen Is Nothing) Then
s_whitePen = New System.Drawing.Pen( _
System.Drawing.Color.White)
End If
'Возвратить
белое перо
Return s_whitePen
End Function
'-----------------------------------------------
'Эта функция позволяет получить доступ
'к полужирному шрифту, находящемуся в кэш-памяти
'-----------------------------------------------
Private Shared Function g_GetBoldFont As System.Drawing.Font
'Если перо еще не существует, создать его
If (s_boldFont Is Nothing) Then
s_boldFont = New System.Drawing.Font( _
System.Drawing.FontFamily.GenericSerif, 10, System.Drawing.FontStyle.Bold)
End If
'Возвратить полужирный шрифт
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
'Присвоить элементам массива значения, которые мы хотим использовать
'при тестировании
ResetTestArray(testArray)
Dim topIndex = testArray.Length - 1
Dim idx As Integer
For idx = 0 To topIndex
'------------------------------------------
Поделиться:
Популярные книги
Идеальный мир для Лекаря 6
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Дракон с подарком
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Темный Патриарх Светлого Рода 6
6. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Падение Твердыни
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Сержант. Назад в СССР. Книга 4
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Измена. Право на сына
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Метка драконов. Княжеский отбор
Фантастика:
фэнтези
5.50
рейтинг книги
На границе тучи ходят хмуро...
1. Александр Агренев
Фантастика:
альтернативная история
9.28
рейтинг книги
Ученичество. Книга 1
1. Государственный маг
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Энфис 2
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Не верь мне
7. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Вечная Война. Книга II
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Неудержимый. Книга III
3. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Энфис 6
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00