python的运行时间

时间:2016-04-20 04:35:29

标签: python timer runtime fft

您好我正在尝试估算我的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

1 个答案:

答案 0 :(得分:1)

时间间隔太小而无法通过time.clock()精确测量,因为OS调用中存在延迟抖动。相反,做足够的工作(循环每个fft几千或几百万次),直到要测量的工作需要几秒钟。同时重复每次测量并取平均值,因为可能存在其他可能改变性能的系统开销(缓存刷新,过程切换等)。