Книга: Программирование мобильных устройств на платформе .NET Compact Framework

Листинг 7.1. Пример кода для измерения временных интервалов, который вы можете использовать для хронометрирования работы своих приложений

Листинг 7.1. Пример кода для измерения временных интервалов, который вы можете использовать для хронометрирования работы своих приложений

Option Strict On
Imports System
Friend Class PerformanceSampling
'Значение этого параметра может быть задано произвольным, но количество
'тестовых интервалов, равное 8, представляется достаточным для большинства
'случаев
Const NUMBER_SAMPLERS As Integer = 8
Private Shared m_perfSamplesNames(NUMBER_SAMPLERS) As String
Private Shared m_perfSamplesStartTicks(NUMBER_SAMPLERS) As Integer
Private Shared m_perfSamplesDuration(NUMBER_SAMPLERS) As Integer
'---------------------------------------------------------------------------
'Определить начальное значение счетчика тактов системных часов для интервала
'---------------------------------------------------------------------------
Friend Shared Sub StartSample(ByVal sampleIndex As Integer, _
 ByVal sampleName As String)
 m_perfSamplesNames(sampleIndex) = sampleName
 m_perfSamplesStartTicks(sampleIndex) = System.Environment.TickCount()
End Sub
'--------------------------------------------------------------------------
'Определить конечное значение счетчика тактов системных часов для интервала
'--------------------------------------------------------------------------
Friend Shared Sub StopSample(ByVal sampleIndex As Integer)
 Dim stopTickCountAs Integer = System.Environment.TickCount
 'Счетчик тактов системных часов сбрасывается в ноль каждые 24,9 дня
 '(что соответствует примерно 2 миллиардам мс)
 'Эта маловероятная возможность будет принята нами во внимание
 If (stopTickCount >= m_perfSamplesStartTicks(sampleIndex)) Then
  'Обычно будет выполняться этот код
  m_perfSamplesDuration(sampleIndex) = _
   stopTickCount - m_perfSamplesStartTicks(sampleIndex)
 Else
  'Значение счетчика тактов "завернулось" через ноль, и мы
  'должны это учесть
  m_perfSamplesDuration(sampleIndex) = stopTickCount + _
   (Integer.MaxValue - m_perfSamplesStartTicks(sampleIndex)) + 1
 End If
End Sub
'-------------------------------------------
'Возвратить длительность тестового интервала
'(в миллисекундах)
'-------------------------------------------
Friend Shared Function GetSampleDuration(ByVal sampleIndex _
 As Integer) As Integer
 Return m_perfSamplesDuration(sampleIndex)
End Function
'Возвращает длительность истекшего тестового
' интервала в секундах
Friend Shared Function GetSampleDurationText(ByVal _
 sampleIndexAs Integer) As String
 Return m_perfSamplesNames(sampleIndex) + ": " + _
  System.Convert.ToString( _
  (m_perfSamplesDuration(sampleIndex) / CDbl(1000.0)) ) + " секунд."
End Function
End Class

Оглавление книги


Генерация: 1.378. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз