【发布时间】:2021-03-10 12:35:45
【问题描述】:
我对 python 有点陌生,我在玩 numba 并编写了一个在 numba 中运行速度比纯 python 慢的代码。在少数情况下,纯 python 比 numba 快大约 x4 倍,在大量情况下,它们的运行几乎相同。是什么让我的代码在 numba 中运行缓慢?
from numba import njit
@njit
def forr (q):
p=0
k=q
n=0
while k!=0:
n += 1
k=k//10
h=(abs(q-n*9)+q-n*9)//2
for j in range(q,h,-1):
s=0
k=j
while k!=0:
s += k%10
k=k//10
if s+j==q:
p=1
print('Yes')
break
if p==0:
print('No')
【问题讨论】:
-
JIT 需要时间。所以,如果你只对少数几个值执行函数,你就不会弥补 JIT 时间。
-
我看到一个循环中的打印语句
-
您可以尝试使用
@njit(parallel = True)看看是否有任何改进。此外,正如 Tarik 评论的那样,我认为这些打印语句不适合 Numba。 -
@Anthraxff 正如我所测量的in my answer,如果测量正确,您的numba 代码真的快
29x倍!请阅读my answer。 -
你如何测量时间,输入是什么以及它如何依赖于函数的代码,即如果你让它不那么复杂,问题仍然存在吗?
标签: python performance numba processing-efficiency