基准测试与空速速度。
除非另有说明,空速自行管理建筑物和python virtualenv。中的一些基准功能 runtests.py 同时告诉ASV使用 runtests.py . 要运行基准测试,您不需要在当前的Python环境中安装numpy的开发版本。
runtests.py
开始之前,确保 空速 已安装。默认情况下, asv 支持anaconda和virtualenv的船只:
pip install asv pip install virtualenv
在提供了新的基准之后,您应该在提交pull请求之前在本地测试它们。
要运行所有基准测试,请导航到命令行的根NumPy目录并执行:
python runtests.py --bench
在哪里? --bench 激活基准测试套件而不是测试套件。这将构建NumPy并运行中定义的所有可用基准测试 benchmarks/ . (注意:这可能需要一段时间。每个基准测试运行多次,以测量执行时间的分布。)
--bench
benchmarks/
从特定的基准模块运行基准,例如 bench_core.py ,只需附加不带扩展名的文件名:
bench_core.py
python runtests.py --bench bench_core
运行类中定义的基准,例如 Mandelbrot 从 bench_avx.py ::
Mandelbrot
bench_avx.py
python runtests.py --bench bench_avx.Mandelbrot
将基准测试结果中的更改与另一个版本/commit/branch:进行比较:
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 documentation 命令行帮助通常通过 asv --help 和 asv run --help .
asv
asv --help
asv run --help
见 ASV documentation 关于如何编写基准的基础知识。
需要考虑的一些事项:
基准套件应该可以导入任何numpy版本。
基准参数等不应取决于安装的numpy版本。
尽量保持基准的运行时间合理。
喜欢ASV的 time_ 基准时间的方法,而不是通过 time.clock 即使在编写基准测试时需要一些技巧。
time_
time.clock
准备阵列等一般应放在 setup 方法而不是 time_ 方法:避免计数准备时间和基准操作时间。
setup
请注意,使用 np.empty 或 np.zeros 在访问内存之前,可能无法在物理内存中分配。如果这是所需的行为,请确保在设置函数中对其进行注释。如果您对一个算法进行基准测试,那么用户不太可能在新创建的空/零数组上执行该算法。可以通过调用 np.ones 或 arr.fill(value) 创建数组后,
np.empty
np.zeros
np.ones
arr.fill(value)