- 1000 loops, best of 3:1.32 ms per loop
- def benchmark_sort_numpy():
- lst = np.random.rand(5000)
- np.sort(lst)
会获得:
- 1000 loops, best of 3:350 µs per loop
我们如今比最初的基准测试快 52 倍!Julia 在该基准测试上花费了 419 微秒,是以编译的 Python 快 20%。
我知道,一些读者会说我不会进行同类比较。我不合意。请记住,我们如今的义务是应用主机说话以最佳的方法排序输入数组。在这种情况下,最佳办法是应用一个内置的函数。
分析代码
我们如今来看看第三个示例,计算 Mandelbrodt 集。Julia 团队应用了这段 Python 代码:
我们比最初的基准测试快了约 15 倍,但这仍然不是应用 Python 的最佳办法。最佳办法是应用 Numpy 内置的 sort()函数。它的默认行动是应用快速排序算法。对此代码计时:
- def mandel(z):
- maxiter = 80
- c = z
- for n in range(maxiter):
- if abs(z) > 2:
- return n
- z = z*z + c
- return maxiter
- def mandelperf():
- r1 = np.linspace(-2.0, 0.5, 26)
- r2 = np.linspace(-1.0, 1.0, 21)
- return [mandel(complex(r, i)) for r in r1 for i in r2]
- assert sum(mandelperf()) == 14791
最后一行是一次合理性检查。对 mandelperf() 函数计时会获得: