Интерфейс теста производительности усиливает скрипт, функцию и основанные на классах интерфейсы модульного тестирования. Можно выполнить проверки в рамках тестов производительности, чтобы гарантировать правильное функциональное поведение при измерении производительности кода. Кроме того, можно запустить тесты производительности как стандартные регрессионные тесты, чтобы гарантировать, что изменения кода не повреждают тесты производительности.
Эта таблица показывает, какой код измеряется для различных типов тестов.
| Тип теста | Что измеряется | Что исключено |
|---|---|---|
| На основе скриптов | Код в каждом разделе скрипта |
|
| Функциональный | Код в каждой тестовой функции |
|
| Основанный на классах | Код в каждом методе помечен с Test атрибут |
|
Основанное на классах получение из matlab.perftest.TestCase и использование startMeasuring и stopMeasuring методы | Код между вызовами startMeasuring и stopMeasuring в каждом методе, помеченном с Test атрибут |
|
Основанное на классах получение из matlab.perftest.TestCase и использование keepMeasuring метод | Код в каждом keepMeasuring-while цикл в каждом методе помечен с Test атрибут |
|
Можно создать два типа экспериментов времени.
frequentist time experiment собирает переменное количество измерений, чтобы достигнуть заданного предела погрешности и доверительного уровня. Используйте частотный эксперимент времени, чтобы задать статистические цели для ваших выборок измерения. Сгенерируйте этот эксперимент с помощью runperf функционируйте или limitingSamplingError статический метод TimeExperiment класс.
fixed time experiment собирает постоянное число измерений. Используйте фиксированный эксперимент времени, чтобы измерить новые затраты на ваш код или взять на себя явное управление вашего объема выборки. Сгенерируйте этот эксперимент с помощью withFixedSampleSize статический метод TimeExperiment класс.
Эта таблица суммирует различия между частотными и фиксированными экспериментами времени.
| Частотный эксперимент времени | Фиксированный эксперимент времени | |
|---|---|---|
| Измерения прогрева | 4 по умолчанию, но конфигурируемый через TimeExperiment.limitingSamplingError | 0 по умолчанию, но конфигурируемый через 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 поскольку тот тест отмечен недопустимый.
Когда среда тестирования эффективности сталкивается с недопустимым результатом испытаний, она ведет себя по-другому в зависимости от типа эксперимента времени:
Если вы создаете частотный эксперимент времени, то среда прекращает измеряться для того теста и перемещается в следующий тест.
Если вы создаете фиксированный эксперимент времени, то среда продолжает собирать конкретное количество выборок.
runperf | testsuite | matlab.perftest.TimeExperiment | matlab.unittest.measurement.MeasurementResult