我有一个正在计算的脚本:
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
上述函数在一个循环中调用,该循环填充两个列表并调用此函数两次:第一次使用 len ~ 1024 个项目的列表,第二次使用 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%。有什么方法可以加快功能吗?