私は計算しているスクリプトを持っています:
def sumsquared(arr):
sum = 0
idx = 0
len = arr.__len__()
while idx < (len - 1):
sum = sum + (arr[idx] * arr[idx]) + (arr[idx+1] * arr[idx+1])
idx = idx + 2
return sum
上記の関数は、2 つのリストを作成し、この関数を 2 回呼び出すループで呼び出されます。1 回目は len ~ 1024 アイテムのリストで、2 回目は len ~ 44100 アイテムのリストです。ループ自体は、入力に応じて 100 ~ 100000 回実行できます。
小さなサイズの入力の場合、cProfile
ベースのプロファイリングは私に通知します:
ncalls tottime percall cumtime percall filename:lineno(function)
---------------------------------------------------------------------
2560 12.065 0.005 12.065 0.005 beat.py:8(sumsquared)
これは、スクリプトの合計実行時間の約 95% です。関数を高速化する方法はありますか?