Интерфейс теста производительности усиливает скрипт, функцию и основанные на классах интерфейсы модульного тестирования. Можно выполнить проверки в рамках тестов производительности, чтобы гарантировать правильное функциональное поведение при измерении производительности кода. Кроме того, можно запустить тесты производительности как стандартные регрессионные тесты, чтобы гарантировать, что изменения кода не повреждают тесты производительности.
Эта таблица показывает, какой код измеряется для различных типов тестов.
Тип теста | Что измеряется | Что исключено |
---|---|---|
На основе скриптов | Код в каждом разделе скрипта |
|
Функциональный | Код в каждой тестовой функции |
|
Основанный на классах | Код в каждом методе помечен с 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
метод многократно, чтобы задать контуры для измерений теста производительности. Если метод тестирования имеет множественные вызовы startMeasuring
stopMeasuring
и 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