为什么这个带有列表输入的简单 numba 函数这么慢

问题描述 投票:0回答:1
import numba
from typing import List

@numba.njit
def test(a: List[int]) -> int:
    return 1

test([i for i in range(2_000_000)])

需要 2 秒并随着列表的大小线性缩放。 用

numba.typed.List
包装输入参数需要更长的时间。 (所有时间都花在了
numba.typed.List
通话上。

如果多次调用该函数(而仅定义一次),则计时不会变得更好,即,这不是编译时间的问题。

有没有办法告诉 numba 按原样使用列表?

在我的实际应用中,原始数据来自外部库,无法直接返回 numpy 数组或 numba 列表,只能返回 Python 列表。

我在 16GB RAM 的 4 核 Ubuntu22 笔记本电脑上使用 numba 0.59.1 和 Python 3.12。

python numpy numba
1个回答
0
投票

你的解释是对的。
指定类型时可以提高速度。例如,您可以使用“@numba.njit”定义列表的类型,也可以使用我更喜欢的 numba.types。

异步任务也可以提供帮助

@njit(parallel=true)
© www.soinside.com 2019 - 2024. All rights reserved.