Способ fast часто является справочной таблицей, при условии, что вы можете ограничить свои входные значения достаточно маленьким диапазоном, например, с помощью (псевдокода):
int sqr_arr[] = {0, 1, 4, 9, 16, 25, 36, ...}
def sqr(n):
if n < 0:
return sqr(-n)
if n >= len(sqr_arr):
return n * n
return sqr_arr[n]
Thisразрешает высокоскоростной поиск в таблице для более низких значений, но возвращается к (возможно) более медленному методу, если вы пытаетесь использовать аргумент, отсутствующий в вашей таблице.
Но, как сказал Митч Уит в комментарии, ускорение умноженияне будет иметь большого эффекта, когда реальным узким местом является квадратный корень.
И помните: мера, не угадайте! Я считаю себя достаточно опытным в стратегиях оптимизации, но вы должны рассмотретьвсе советы (в том числе и мои) с такой же осмотрительностью, как у алкоголика в канаве, рассказывающие, как прожить долгую и успешную жизнь.