【发布时间】:2021-04-22 12:43:43
【问题描述】:
假设我有两个函数
def my_sub1(a):
return a + 2
def my_main(a):
a += 1
b = mysub1(a)
return b
我想使用像 Numba 这样的即时编译器让它们更快。这会比我将所有内容重构为一个函数要慢吗
def my_main(a):
a += 1
b = a + 2
return b
因为 Numba 可以在第二种情况下进行更深入的优化?当然,我的实际功能要复杂得多。
如果my_sub1 函数被多次调用,整个情况也会变得更加困难——重构(和维护会变得很麻烦)。 Numba 是如何解决这个问题的?
【问题讨论】:
-
实际中
a的类型是什么?你的 Numba 版本是什么?我无法使用a重现 Numba 0.53 的问题,该数组包含 1M 的float64:两者都需要完全相同的时间。请提供一个可重现的最小示例。 -
@JérômeRichard:我的参数(不仅仅是一个
a)是 numpy 数组(被处理的数据)和单个值,包括用于配置的字符串、整数和浮点数。但也许有一个误解:不是我做了一个实验,一个案例比另一个案例快。相反,我问的是 numba 是如何工作的,特别是如果我有第一个案例(有两个功能)它是如何工作的。我想知道第二种情况是否总体上更快,并且原则上(不是具体和实验)。
标签: python performance numba