Книга: Программирование мобильных устройств на платформе .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
- Листинг 7.1. Пример кода для измерения временных интервалов, который вы можете использовать для хронометрирования работы своих приложений
- Листинг 7.2. Тестовая программа, демонстрирующая использование приведенного выше кода для измерения временных интервалов
- Листинг 7.3. Демонстрация трех различных уровней организации обратной связи с пользователем
- Листинг 7.4. Сравнение производительности двух алгоритмов, в одном из которых используются исключения, а во втором — нет
- Примеры к главе 7 (производительность: введение)
- Пример установочного скрипта
- Пример из практики
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Типы данных для работы с датой и временем
- Повышение производительности приложений с помощью хранимых процедур
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- 1.2. Определение количества информации. Единицы измерения количества информации
- Глава 5 Агрессивные формы кода и борьба с ними
- Примеры получения статистики
- Безопасность временных таблиц
- Пример применения метода «пять почему»