【发布时间】:2021-05-31 03:26:25
【问题描述】:
编辑:忘记多次运行 numba(哎呀!)
我将 namedtuple 和 Dict 的 numba 版本视为潜在的解决方案,但与 Python 对应的版本相比,它们似乎要慢得多(大约慢 10000 倍)。
import time
from numba import njit
from collections import namedtuple
Alpha = namedtuple("Alpha", ["a", "b", "c"])
Regions = namedtuple("Regions", ["a", "b"])
State = namedtuple("State", ["H", "L"])
Parameters = namedtuple("Parameters", ["alpha", "DB", "beta", "psi", "pi", "CC_opt"])
def timer_func(func):
def function_timer(*args, **kwargs):
start = time.time()
value = func(*args, **kwargs)
end = time.time()
runtime = end - start
msg = "{func} took {time} seconds to complete its execution."
print(msg.format(func=func.__name__, time=runtime))
return value
return function_timer
@timer_func
def build_params() -> Parameters:
alpha = Regions(
a=Alpha(0.5, 0.5, 0),
b=Alpha(0.5, 0.5, 0),
)
return Parameters(alpha=alpha, DB=State(0.0, 0.0), beta=0.8, psi=0.0, pi=0.5, CC_opt=1.0)
@timer_func
@njit
def build_params_numba() -> Parameters:
alpha = Regions(
a=Alpha(0.5, 0.5, 0),
b=Alpha(0.5, 0.5, 0),
)
return Parameters(alpha=alpha, DB=State(0.0, 0.0), beta=0.8, psi=0.0, pi=0.5, CC_opt=1.0)
if __name__ == "__main__":
build_params()
build_params_numba()
build_params 花了 3.814697265625e-06 秒来完成它的执行。
build_params_numba 用了 0.07473492622375488 秒来完成它的执行。
编辑:
build_params_numba 用了 3.5762786865234375e-06 秒来完成它的执行。
【问题讨论】:
标签: python data-structures numba