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

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

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

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

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

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

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

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

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

  • Разделяемая настройка фиксатора и отключение

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

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

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

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

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

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

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

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

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

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

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

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

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

Выполнение тестов производительности

Существует два способа запустить тесты производительности:

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

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

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

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

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

Понимание недопустимых результатов испытаний

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

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

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

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

Смотрите также

| | |

Похожие темы