您好我正在尝试估算我的fft代码表单numpy的运行时间。使用不同的输入长度N.以下是我的代码。
import cmath
import math
from random import uniform
from numpy.fft import fft
import time
for i in range(3,10):
N = 2**i
x = [uniform(-32768,32767) for i in range(N)]
t0 = time.clock()
X = fft(x)
t1 = time.clock()
print t1-t0
这是我得到的结果,输入长度N = 3的第一行应该是最快的,但无论我运行多少次,第一行总是最大的一行。我猜这是计时器的问题,但我不知道它的确切原因。任何人都可以向我解释这个吗?
输出:
4.8e-05
3e-05
1.7e-05
6e-05
3.1e-05
5.4e-05
9.6e-05
答案 0 :(得分:1)
时间间隔太小而无法通过time.clock()精确测量,因为OS调用中存在延迟抖动。相反,做足够的工作(循环每个fft几千或几百万次),直到要测量的工作需要几秒钟。同时重复每次测量并取平均值,因为可能存在其他可能改变性能的系统开销(缓存刷新,过程切换等)。