Есть ли какая-либо структура в данных или в функции myfunction
, которая может позволить вам вычислить значения ключа N
без фактической оценки mufunction
N
раз?
Скажем, у вас естьфункция sum(n)
, которая вычисляет сумму элементов массива arr
до индекса n
.Если вы звоните по номеру n
= 1234, вам не нужно звонить по номеру n
= 1235, потому что это добавит первые 1234 номера без всякой причины.В этом случае sum
(1235) = sum
(1234) + arr
[1234], намного быстрее для вычисления.
Другая оптимизация была бы, если бы появились ваши параметры (xp, yp, zp)несколько раз в массивах.В этом случае вы бы без необходимости вызывали myfunction
большое количество раз с одними и теми же параметрами, надеясь получить одинаковые результаты.
Если это так и массивы данных большие, но содержат гораздо меньший набор различных значений, вы можете запоминать результаты в своего рода кэше.Перед вызовом myfunction вы проверяете кеш, чтобы увидеть, не подсчитали ли вы результаты.Используйте кэшированное значение, если вы это сделали или вычислите, и добавьте его в кэш, если вы этого не сделали.
В противном случае вы не собираетесь оптимизировать это каким-либо значимым образом, а вместо этого вы должны стремиться сделать его таким же читабельным,возможно.