Spec-Zone.ru › NumPy 1.19

NumPy бенчмарки

Бенчмаркинг NumPy с Airspeed Velocity.

Использование

Airspeed Velocity управляет созданием и Python виртуальными окружениями самостоятельно, если не указано иное. Некоторые из функций бенчмаркинга в runtests.py также указывают ASV использовать скомпилированный NumPy runtests.py. Для запуска бенчмарков вам не нужно устанавливать разрабатываемую версию NumPy в вашу текущую Python среду.

Перед началом убедитесь, что airspeed velocity установлен. По умолчанию, asv поставляется с поддержкой anaconda и virtualenv:

pip install asv
pip install virtualenv

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

Для запуска всех бенчмарков, перейдите в корневую директорию NumPy в командной строке и выполните:

python runtests.py --bench

где --bench активирует набор бенчмарков вместо набора тестов. Это скомпилирует NumPy и запустит все доступные бенчмарки, определённые в benchmarks/. (Примечание: это может занять некоторое время. Каждый бенчмарк запускается несколько раз для измерения распределения во времени выполнения.)

Для запуска бенчмарков из конкретного модуля бенчмарков, например bench_core.py, просто добавьте имя файла без расширения:

python runtests.py --bench bench_core

Для запуска бенчмарка, определённого в классе, например Mandelbrot из bench_avx.py:

python runtests.py --bench bench_avx.Mandelbrot

Сравните изменение результатов бенчмарков с другой версией/коммитом/веткой:

python runtests.py --bench-compare v1.6.2 bench_core
python runtests.py --bench-compare 8bf4e9b bench_core
python runtests.py --bench-compare master bench_core

Все вышеперечисленные команды отображают результаты в простом текстовом формате в консоли, и результаты не сохраняются для сравнения с будущими коммитами. Для большего контроля, графического представления и сохранения результатов для сравнения с будущими коммитами можно запустить команды ASV (запись результатов и генерация HTML):

cd benchmarks
asv run -n -e --python=same
asv publish
asv preview

Подробнее о том, как использовать asv можно найти в документации ASV Помощь в командной строке доступна как обычно через asv --help и asv run --help.

Написание бенчмарков

См. документацию ASV для основ написания бенчмарков.

Некоторые моменты, которые следует учитывать:

  • Набор бенчмарков должен импортироваться с любой версией NumPy.
  • Параметры бенчмарков и т. д. не должны зависеть от установленной версии NumPy.
  • Постарайтесь, чтобы время выполнения бенчмарка было разумным.
  • Предпочитайте методы ASV time_ для измерения времени выполнения бенчмарков, а не вычислять время вручную через time.clock, даже если это потребует некоторой перестройки при написании бенчмарка.
  • Подготовка массивов и т. д. должна, как правило, выполняться в методе setup, а не в методах time_, чтобы избежать подсчета времени подготовки вместе со временем выполняемой операции.
  • Обращайте внимание на то, что большие массивы, созданные с помощью np.empty или np.zeros, могут не быть выделены в физической памяти до момента доступа к памяти. Если такое поведение желательно, обязательно прокомментируйте это в функции настройки. Если вы тестируете алгоритм, маловероятно, что пользователь будет выполнять данный алгоритм на только что созданном пустом/нулевом массиве. Можно принудительно вызвать страницу с ошибками в фазе настройки, вызвав np.ones или arr.fill(value) после создания массива.

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/benchmarking.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API