Обзор среды для тестирования производительности

Интерфейс тестирования эффективности использует скрипт, функцию и основанные на классах интерфейсы модульного тестирования. Вы можете выполнить проверки в тестах эффективности, чтобы гарантировать правильное функциональное поведение при измерении производительности кода. Кроме того, можно запустить тесты эффективности как стандартные регрессионные тесты, чтобы убедиться, что изменения кода не нарушают тесты эффективности.

Определите границы измеренного кода

Эта таблица указывает, какой код измеряется для различных типов тестов.

Тип тестаЧто измеряетсяЧто исключено
На основе скриптовКод в каждом разделе скрипта
  • Код в разделе общих переменных

  • Измеренная оценка накладных расходов среды

ФункциональныйКод в каждой тестовой функции
  • Код в следующих функциях: setup, setupOnce, teardown, и teardownOnce

  • Измеренная оценка накладных расходов среды

Основанные на классахКод в каждом методе, помеченный Test признак
  • Кодируйте в методах со следующими атрибутами: TestMethodSetup, TestMethodTeardown, TestClassSetup, и TestClassTeardown

  • Общая настройка фиксатора и отключение

  • Измеренная оценка накладных расходов среды

Основанные на классах производные от matlab.perftest.TestCase и использование startMeasuring и stopMeasuring методыКод между вызовами в startMeasuring и stopMeasuring в каждом методе с тегами Test признак
  • Код за пределами startMeasuring/ stopMeasuring контур

  • Измеренная оценка накладных расходов среды

Основанные на классах производные от matlab.perftest.TestCase и использование keepMeasuring методКод внутри каждого keepMeasuring-while цикл в каждом методе, помеченном Test признак
  • Код за пределами keepMeasuring-while контур

  • Измеренная оценка накладных расходов среды

Типы временных экспериментов

Можно создать два типа временных экспериментов.

  • A frequentist time experiment собирает переменное количество измерений, чтобы достичь заданного запаса на уровне ошибки и доверия. Используйте частотный временной эксперимент, чтобы задать статистические цели для ваших выборок измерений. Сгенерируйте этот эксперимент, используя runperf функцию или limitingSamplingError статический метод TimeExperiment класс.

  • A fixed time experiment собирает фиксированное количество измерений. Используйте эксперимент с фиксированным временем, чтобы измерить первые затраты на ваш код или взять под явный контроль размер вашей выборки. Сгенерируйте этот эксперимент с помощью withFixedSampleSize статический метод TimeExperiment класс.

В этой таблице обобщены различия между частотными и фиксированными временными экспериментами.

 Частотный временной экспериментЭксперимент с фиксированным временем
Измерения прогрева4 по умолчанию, но конфигурируемый через TimeExperiment.limitingSamplingError0 по умолчанию, но конфигурируемый через TimeExperiment.withFixedSampleSize
Количество выборокОт 4 до 256 по умолчанию, но конфигурируемый через TimeExperiment.limitingSamplingErrorОпределено во время конструкции эксперимента
Относительный запас ошибки5% по умолчанию, но конфигурируемый через TimeExperiment.limitingSamplingErrorНе применяется
Доверительный уровень95% по умолчанию, но конфигурируемый через TimeExperiment.limitingSamplingErrorНе применяется
Поведение среды для недопустимого результата тестированияОстанавливает измерение теста и переходит к следующемуСобирает указанное количество выборок

Запись тестов эффективности с контурами измерения

Если ваши основанные на классах тесты получают из matlab.perftest.TestCase вместо matlab.unittest.TestCase, тогда вы можете использовать startMeasuring и stopMeasuring методы или keepMeasuring способ несколько раз для определения контуров для тестовых измерений эффективности. Если у тестового метода несколько вызовов для startMeasuring, stopMeasuring и keepMeasuring, затем среда тестирования эффективности накапливает и суммирует измерения. Среда тестирования эффективности не поддерживает вложенные контуры измерений. Если вы неправильно используете эти методы в Test метод и запустите тест как TimeExperiment, затем среда помечает измерение как недопустимое. Кроме того, вы по-прежнему можете запускать эти тесты эффективности как модульные тесты. Для получения дополнительной информации см. Раздел «Тестирование производительности с использованием классов».

Запуск тестов эффективности

Существует два способа запуска тестов эффективности:

  • Используйте runperf функция для запуска тестов. Эта функция использует переменное количество измерений, чтобы достичь среднего значения выборки с относительным запасом 0,05 ошибок в пределах уровня 0,95 доверия. Он запускает тесты четыре раза, чтобы прогреть код и между 4 и 256 раз, чтобы собрать измерения, которые отвечают статистическим целям.

  • Сгенерируйте явный тестовый набор, используя testsuite function или методы в TestSuite класс, а затем создайте и запустите временной эксперимент.

    • Используйте withFixedSampleSize метод TimeExperiment класс, чтобы создать временной эксперимент с фиксированным количеством измерений. Можно задать фиксированное количество измерений разогрева и фиксированное количество выборок.

    • Используйте limitingSamplingError метод TimeExperiment класс, чтобы создать временной эксперимент с заданными статистическими целями, такими как запас по ошибку и уровень доверия. Также можно задать количество измерений разогрева и минимальное и максимальное количество выборок.

Можно запустить тесты эффективности как регрессионные тесты. Для получения дополнительной информации см. Раздел «Тестирование производительности с использованием классов».

Осмыслите недопустимые результаты тестирования

В некоторых ситуациях MeasurementResult результат теста отмечен как недопустимый. Результат тестирования помечается как недопустимый, когда среда тестирования эффективности устанавливает Valid свойство MeasurementResult на ложь. Это недействительное действие происходит в случае непрохождения теста или фильтрации. Кроме того, если ваш тест неправильно использует startMeasuring и stopMeasuring методы matlab.perftest.TestCase, затем MeasurementResult для этого теста отмечен недопустимым.

Когда среда тестирования эффективности сталкивается с недопустимым результатом тестирования, она ведет себя по-разному в зависимости от типа временного эксперимента:

  • Если вы создаете частый временной эксперимент, то среда останавливает измерение для этого теста и переходит к следующему тесту.

  • Если вы создали эксперимент с фиксированным временем, то среда продолжает сбор заданного количества выборок.

См. также

| | |

Похожие темы