テストスクリプトを実行します。FFTW に基づく numpy.fft.fft()、anfft.fft() および FFTW に基づく pyfftw.interfaces.numpy_fft.fft() を使用します。
ここに私のテストスクリプトのソースがあります:
import numpy as np
import anfft
import pyfftw
import time
a = pyfftw.n_byte_align_empty(128, 16, 'complex128')
a[:] = np.random.randn(128) + 1j*np.random.randn(128)
time0 = time.clock()
res1 = np.fft.fft(a)
time1 = time.clock()
res2 = anfft.fft(a)
time2 = time.clock()
res3 = pyfftw.interfaces.numpy_fft.fft(a,threads=50)
time3 = time.clock()
print 'Time numpy: %s' % (time1 - time0)
print 'Time anfft: %s' % (time2 - time1)
print 'Time pyfftw: %s' % (time3 - time2)
そして、私はこれらの結果を得る:
Time numpy: 0.00154248116307
Time anfft: 0.0139805208195
Time pyfftw: 0.137729374893
anfft ライブラリは巨大なデータに対してより高速な fft を生成しますが、pyfftw はどうですか? なぜそれはとても遅いですか?