Интерфейс теста производительности усиливает скрипт, функцию и основанные на классах интерфейсы модульного тестирования. Можно выполнить проверки в рамках тестов производительности, чтобы гарантировать правильное функциональное поведение при измерении производительности кода. Кроме того, можно запустить тесты производительности как стандартные регрессионные тесты, чтобы гарантировать, что изменения кода не повреждают тесты производительности.
Эта таблица показывает, какой код измеряется для различных типов тестов.
Тип теста | Что измеряется | Что исключено |
---|---|---|
На основе скриптов | Код в каждом разделе скрипта |
|
Функциональный | Код в каждой тестовой функции |
|
Основанный на классах | Код в каждом методе помечен с атрибутом 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
для того теста отмечен недопустимый.
Когда среда тестирования производительности сталкивается с недопустимым результатом испытаний, она ведет себя по-другому в зависимости от типа эксперимента времени:
Если вы создаете частотный эксперимент времени, то среда прекращает измеряться для того теста и перемещается в следующий тест.
Если вы создаете фиксированный эксперимент времени, то среда продолжает собирать конкретное количество выборок.
matlab.perftest.TimeExperiment
| matlab.unittest.measurement.MeasurementResult
| runperf
| testsuite