首页 > 解决方案 > 如何正确指定 numba JIT 函数的签名?

问题描述

我创建了一个@jit编译函数,它应该比普通循环更快。但是它不是,因为及时编译需要几分钟。我究竟做错了什么?

为这个函数指定签名的最有效方法是什么?

''' reproducable sample data '''

import numpy as np, time, numba as nb
LEN, Amount_Of_Elements = 10000,4000
temp = np.random.randint(Amount_Of_Elements*0.7,high=Amount_Of_Elements, size=LEN) 
RatiosUp         = [np.random.uniform(size=rand) for rand in temp]
RatiosDown       = [np.random.uniform(size=rand) for rand in temp]
UpPointsSlices   = [np.random.uniform(size=rand) for rand in temp]
DownPointsSlices = [np.random.uniform(size=rand) for rand in temp]

''' function '''

@nb.jit
def filter(a,b):
    return a > b 

@nb.jit
def func(RatiosUp, RatiosDown, UpPointsSlices, DownPointsSlices, result):
    for i in range(len(RatiosUp)): 
   
        for j in range(RatiosUp[i].size): 

            if filter3(RatiosUp[i][j],RatiosDown[i][j]):
                result[i][j] = 1
            elif filter3(RatiosDown[i][j],RatiosUp[i][j]):
                result[i][j] = 0
            elif filter3(UpPointsSlices[i][j],DownPointsSlices[i][j]): 
                result[i][j] = 0
            else:                       
                result[i][j] = 1 

标签: pythonalgorithmperformancenumpynumba

解决方案


推荐阅读