我目前正在运行test_matrix_speed()以查看我的search_and_book_availability功能有多快。使用 PyCharm 分析器,我可以看到每个search_and_book_availability函数调用的平均速度为 0.001 毫秒。拥有 Numba@jit(nopython=True)装饰器对该函数的性能没有影响。这是因为没有任何改进并且 Numpy 在这里运行得尽可能快吗?(我不在乎generate_searches函数的速度)
这是我正在运行的代码
import random
import numpy as np
from numba import jit
def generate_searches(number, sim_start, sim_end):
searches = []
for i in range(number):
start_slot = random.randint(sim_start, sim_end - 1)
end_slot = random.randint(start_slot + 1, sim_end)
searches.append((start_slot, end_slot))
return searches
@jit(nopython=True)
def search_and_book_availability(matrix, search_start, search_end):
search_slice = matrix[:, search_start:search_end]
output = np.where(np.sum(search_slice, axis=1) == 0)[0]
number_of_bookable_vecs = output.size
if number_of_bookable_vecs > 0:
if number_of_bookable_vecs == 1:
id_to_book = output[0]
else:
id_to_book = np.random.choice(output)
matrix[id_to_book, search_start:search_end] = 1
return True
else:
return False
def test_matrix_speed():
shape = (10, 1440)
matrix = np.zeros(shape)
sim_start = 0
sim_end = 1440
searches = generate_searches(1000000, sim_start, sim_end)
for i in searches:
search_start = i[0]
search_end = i[1]
availability = search_and_book_availability(matrix, search_start, search_end)
眼眸繁星
相关分类