' FALSE: если результат отрицателен
'==================================================================
Function returnFalseIfLessThanZero_Add2Numbers( _
ByVal n1As Integer, ByVal n2 As Integer, _
ByRef n3 As Integer) As Boolean
n3 = n1 + n2
'Результат меньше 0?
If (n3 < 0) Then
Return False
End If
Return True
End Function
'========================================================================
'ТЕСТОВАЯ ФУНКЦИЯ:
'Сложить n1 и n2 и возвратить результат
'в n3
'Если n3 меньше 0, то функция ПЕРЕДАЕТ УПРАВЛЕНИЕ ОБРАБОТЧИКУ ИСКЛЮЧЕНИЙ.
'В противном случае возвращается TRUE
'========================================================================
Function exceptionIfLessThanZero_Add2Numbers( _
ByVal n1As Integer, ByVal n2As Integer, _
ByRef n3 As Integer) As Boolean
n3 = n1 + n2
'Результат меньше 0?
If (n3 <0) Then
Throw New Exception("Результат меньше 0!")
End If
Return True
End Function
'=======================================================
'Осуществляет многократные вызовы простой функции и
'измеряет общее время выполнения
'Вызываемая функция НЕ приводит к возбуждению исключений
'=======================================================
Private Sub buttonRunNoExceptionCode_Click(ByVal senderAs System.Object, _
ByVal eAs System.EventArgs) Handles buttonRunNoExceptionCode.Click
Const TEST_NUMBERAs Integer = 0
Dim numberItterations As Integer
numberItterations = _
CInt(textBoxNumberAttempts.Text)
'Отобразить количество итераций, которые предстоит выполнить
ListBox1.Items.Add("=>" + numberItterations.ToString() + " итераций")
Dim count_SumLessThanZero As Integer
Dim dataOut As Integer
'----------------
'Запустить таймер
'----------------
PerformanceSampling.StartSample(TEST_NUMBER, "Исключения отсутствуют")
'------------------------------------------------------
'Выполнить цикл, в котором осуществляется вызов функции
'------------------------------------------------------
count_SumLessThanZero = 0
Dim sumGreaterThanZero As Boolean
Dim i As Integer
While (i < numberItterations)
'=========================
'Вызвать тестовую функцию!
'=========================
sumGreaterThanZero = _
returnFalseIfLessThanZero_Add2Numbers(-2, -3, dataOut)
If (sumGreaterThanZero = False) Then
count_SumLessThanZero = count_SumLessThanZero + 1
End If
i = i + 1
End While
'-----------------
'Остановить таймер
'-----------------
PerformanceSampling.StopSample(TEST_NUMBER)
'--------------------------------
'Показать результаты пользователю
'--------------------------------
If (count_SumLessThanZero = numberItterations) Then
MsgBox("Тест выполнен")
ListBox1.Items.Add( _
PerformanceSampling.GetSampleDurationText(TEST_NUMBER))
Else
MsgBox("При выполнении теста возникали осложнения")
End If
End Sub
'==================================================
'Осуществляет многократные вызовы простой функции и
'измеряет общее время выполнения.
'Вызываемая функция ВОЗБУЖДАЕТ исключения
'==================================================
Private Sub buttonRunExceptionCode_Click_Click(ByVal senderAs System.Object, _
ByVal e As System.EventArgs) Handles buttonRunExceptionCode_Click.Click
Const TESTNUMBERAs Integer = 1
'Получить количество итераций Dim numberItterationsAs
Integer numberItterations = _
CInt(textBoxNumberAttempts.Text)
'Отобразить количество итераций, которые надлежит выполнить
ListBox1.Items.Add("=>" + numberItterations.ToString() + " итераций")
Dim count_SumLessThanZero As Integer
Dim dataOut As Integer
'----------------
'Запустить таймер
'----------------
PerformanceSampling.StartSample(TEST_NUMBER, "Перехват исключения")
'------------------------------------------------------
'Выполнить цикл, в котором осуществляется вызов функции
'------------------------------------------------------
count_SumLessThanZero = 0
Dim sumGreaterThanZero As Boolean
Dim i As Integer
While (i < numberItterations)
Try
'=========================
'Вызвать тестовую функцию!
'=========================
sumGreaterThanZero = _
exceptionIfLessThanZero_Add2Numbers(-2, -3, dataOut)
Catch
count_SumLessThanZero = count_SumLessThanZero + 1
End Try
i = i + 1
End While 'конец цикла
'-----------------
'Остановить таймер
'-----------------
PerformanceSampling.StopSample(TEST_NUMBER)
'--------------------------------
'Показать результаты пользователю
'--------------------------------
If (count_SumLessThanZero = numberItterations) Then
MsgBox("Тест выполнен")
ListBox1.Items.Add( _
PerformanceSampling.GetSampleDurationText(TEST_NUMBER))
Else
MsgBox("При выполнении теста возникали осложнения")
End If
End Sub
Примеры к главе 8 (производительность и память)
Option Strict On
Public Class GraphicsGlobals
Private Shared s_Player_Bitmap1 As System.Drawing.Bitmap
Private Shared s_Player_Bitmap2 As System.Drawing.Bitmap
Private Shared s_Player_Bitmap3 As System.Drawing.Bitmap