Я пытаюсь ускорить часть кода Python, в котором у меня есть следующий код:
for i in range(n):
for j in range(m):
for (sign,idx) in [(a,b),(c,d),(e,f),(g,h)]:
array[idx,i] += sign * something
array[idx,j] += sign * somethingElse
, где a, b, c ... - относительно сложные выражения.
Если я вручную разверну для внутренней для l oop, написав:
for i in range(n):
for j in range(m):
sign,idx = a,b
array[idx,i] += sign * something
array[idx,j] += sign * somethingElse
sign,idx = c,d
array[idx,i] += sign * something
array[idx,j] += sign * somethingElse
sign,idx = e,f
array[idx,i] += sign * something
array[idx,j] += sign * somethingElse
sign,idx = g,h
array[idx,i] += sign * something
array[idx,j] += sign * somethingElse
Код выполняется в 4 раза быстрее ... Но вставка копии кажется плохой идеей.
Мой вопрос: это можно сделать автоматически во время компиляции?