Spec-Zone.ru › NumPy 1.21

NumPy бенчмарки

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

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

Airspeed Velocity управляет созданием и Python virtualenv самостоятельно, если не указано иное. Некоторые функции бенчмаркинга в 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 main 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.
  • Постарайтесь сохранить время выполнения бенчмарка разумным.
  • Предпочитайте методы time_ ASV для измерения времени бенчмарков вместо создания измерений времени с помощью time.clock, даже если это потребует некоторой подстройки при написании бенчмарка.
  • Подготовка массивов и т.д. обычно должна быть помещена в метод setup, а не в методы time_, чтобы избежать учета времени подготовки вместе со временем измеряемой операции.
  • Учитывайте, что большие массивы, созданные с помощью np.empty или np.zeros, могут не быть выделены в физической памяти до обращения к памяти. Если это желаемое поведение, убедитесь, что это прокомментировано в вашей функции настройки. Если вы тестируете алгоритм, маловероятно, что пользователь будет выполнять данный алгоритм на только что созданном пустом/нулевом массиве. Можно принудительно вызвать pagefaults на фазе настройки, вызвав np.ones или arr.fill(value) после создания массива.

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

Spec-Zone.ru

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