Выбрать главу

' приведенные ниже функции xxx_Click.

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

'Количество элементов, которые необходимо поместить в элемент

'управления TreeView

Const NUMBER_ITEMS As Integer = 800

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

'Код для кнопки "Filclass="underline" Baseline"

'Использование неоптимизированного подхода для заполнения данными элемента

'управления TreeView

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

Private Sub UnOptimizedFill_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles UnOptimizedFill.Click

 'Очистить массив для создания одинаковых условий тестирования

 If (TreeView1.Nodes.Count > 0) Then

  TreeView1.BeginUpdate()

  TreeView1.Nodes.Clear()

  TreeView1.EndUpdate()

  TreeView1.Update()

 End If

 'Для повышения корректности тестирования предварительно выполнить

 'операцию сборки мусора. В реальных кодах этого делать не следует!

 System.GC.Collect()

 'Запустить таймер

 PerformanceSampling.StartSample(0, "TreeViewPopulate")

 'Заполнить данными элемент управления TreeView

 Dim i As Integer

 For i = 1 To NUMBER_ITEMS

  TreeView1.Nodes.Add("TreeItem" + CStr(i))

 Next

 'Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(0)

 MsgBox(PerformanceSampling.GetSampleDurationText(0))

End Sub

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

'Код для кнопки "Clear: Baseline"

'Использование неоптимизированного подхода для заполнения данными элемента

'управления TreeView

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

Private Sub UnOptimizedClear_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles UnOptimizedClear.Click

 'Для повышения корректности тестирования предварительно выполнить

 'операцию сборки мусора

 System.GC.Collect()

 'Запустить таймер

 PerformanceSampling.StartSample(1, "TreeViewClear")

 TreeView1.Nodes.Clear()

 PerformanceSampling.StopSample(1)

 MsgBox(PerformanceSampling.GetSampleDurationText(1))

End Sub

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

'Код для кнопки "Filclass="underline" BeginUpdate"

'Подход, в котором используется метод BeginUpdate()

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

Private Sub UseBeginEndUpdateForFill_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles UseBeginEndUpdateForFill.Click

 'Очистить массив для создания одинаковых условий тестирования

 If (TreeView1.Nodes.Count > 0) Then

  TreeView1.BeginUpdate()

  TreeView1.Nodes.Clear()

  TreeView1.EndUpdate()

  TreeView1.Update()

 End If

 'Для повышения корректности тестирования предварительно выполнить

 'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!

 System.GC.Collect()

 'Запустить таймер

 PerformanceSampling.StartSample(2, _

  "Populate - Use BeginUpdate")

 'Заполнить данными элемент управления TreeView

 TreeView1.BeginUpdate()

 Dim i As Integer

 For i = 1 To NUMBER_ITEMS

  TreeView1.Nodes.Add("TreeItem" + i.ToString())

 Next

 TreeView1.EndUpdate()

 'Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(2)

 MsgBox(PerformanceSampling.GetSampleDurationText(2))

End Sub

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

'Код для кнопки "Clear: BeginUpdate"

'Подход, в котором используется метод BeginUpdate()

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

Private Sub UseBeginEndUpdateForClear_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles UseBeginEndUpdateForClear.Click

 'Для повышения корректности тестирования предварительно выполнить

 'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!

 System.GC.Collect()

 'Запустить таймер

 PerformanceSampling.StartSample(3, "Clear - Use BeginUpdate")

 TreeView1.BeginUpdate()

 TreeView1.Nodes.Clear()

 TreeView1.EndUpdate()

 'Остановить таймер и отобразить результат

 PerformanceSampling.StopSample(3)

 MsgBox(PerformanceSampling.GetSampleDurationText(3))

End Sub

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

'Код для кнопки "Filclass="underline" Use Array"

'Подход, в котором используется массив

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

Private Sub FillArrayBeforeAttachingToTree_Click(ByVal _

 sender As System.Object, ByVal e As System.EventArgs) _

 Handles FillArrayBeforeAttachingToTree.Click

 'Очистить массив для создания одинаковых условий тестирования

 If (TreeView1.Nodes.Count > 0) Then

  TreeView1.BeginUpdate()

  TreeView1.Nodes.Clear()

  TreeView1.EndUpdate()

  TreeView1.Update()

 End If

 'Для повышения корректности тестирования предварительно выполнить

 'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!

 System.GC.Collect()

 'Запустить таймер

 PerformanceSampling.StartSample(4, "Populate - Use Array")

 'Распределить память для нашего массива узлов дерева

 Dim newTreeNodes() As System.Windows.Forms.TreeNode

 ReDim newTreeNodes(NUMBER_ITEMS - 1)

 'Заполнить массив

 Dim i As Integer

 For i = 0 To NUMBER_ITEMS - 1

  newTreeNodes(i) = _