#python #numpy
Вопрос:
Я использую Python numpy для своих матриц и хотел бы знать, какой способ кодирования более эффективен в зависимости от вычислительных затрат, а какой-в зависимости от стоимости памяти.
В первом примере я каждый раз создаю новый массив, во втором я бы перезаписал тот же самый.
def pipeline1(input, k1, k2, k3):
A = np.array([input.x, input.y])
B = np.dot(A, k1)
C = B k2 / k3
def pipeline2(input, k1, k2, k3):
A = np.array([input.x, input.y])
A = np.dot(A, k1)
A = A k2 / k3
Какой способ более эффективен? Имеет ли это какое-то значение? Это один из примеров.
Комментарии:
1. Вычисления, очевидно, те же самые. Память, очевидно, хуже при первом вызове, так как вы сохраняете все промежуточные результаты (до тех пор, пока функция не завершится)… Хотя на практике python выполняет сборку мусора за вас, поэтому нет гарантии, что вторая функция действительно будет занимать больше памяти.
2. Если только ваши массивы не настолько велики, что вы получаете ошибки памяти с первым, используйте то, что вам всегда понятнее. Все переменные являются локальными.
Ответ №1:
Если массивы такие маленькие, то память не будет проблемой ни для того, ни для другого, но второй вариант будет лучше в больших массивах.