numpy基准

基准测试与空速速度。

使用

除非另有说明,空速自行管理建筑物和python virtualenv。中的一些基准功能 runtests.py 同时告诉ASV使用 runtests.py . 要运行基准测试,您不需要在当前的Python环境中安装numpy的开发版本。

开始之前,确保 空速 已安装。默认情况下, asv 支持anaconda和virtualenv的船只:

pip install asv
pip install virtualenv

在提供了新的基准之后,您应该在提交pull请求之前在本地测试它们。

要运行所有基准测试,请导航到命令行的根NumPy目录并执行:

python runtests.py --bench

在哪里? --bench 激活基准测试套件而不是测试套件。这将构建NumPy并运行中定义的所有可用基准测试 benchmarks/ . (注意:这可能需要一段时间。每个基准测试运行多次,以测量执行时间的分布。)

从特定的基准模块运行基准,例如 bench_core.py ,只需附加不带扩展名的文件名:

python runtests.py --bench bench_core

运行类中定义的基准,例如 Mandelbrotbench_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 --helpasv run --help .

编写基准

ASV documentation 关于如何编写基准的基础知识。

需要考虑的一些事项:

  • 基准套件应该可以导入任何numpy版本。

  • 基准参数等不应取决于安装的numpy版本。

  • 尽量保持基准的运行时间合理。

  • 喜欢ASV的 time_ 基准时间的方法,而不是通过 time.clock 即使在编写基准测试时需要一些技巧。

  • 准备阵列等一般应放在 setup 方法而不是 time_ 方法:避免计数准备时间和基准操作时间。

  • 请注意,使用 np.emptynp.zeros 在访问内存之前,可能无法在物理内存中分配。如果这是所需的行为,请确保在设置函数中对其进行注释。如果您对一个算法进行基准测试,那么用户不太可能在新创建的空/零数组上执行该算法。可以通过调用 np.onesarr.fill(value) 创建数组后,