擅长:python、mysql、java
<p>这里的问题是使用<code>numpy_fft</code>接口的开销。首先,应该使用<code>pyfftw.interfaces.cache.enable()</code>启用缓存,然后用<code>timeit</code>测试结果。即使使用缓存,如果使用原始接口,使用接口的开销也是固定的。在</p>
<p>在我的机器上,在128长度的数组上,接口的开销仍然比<code>numpy.fft</code>慢。随着长度的增加,这个开销就变得不那么重要了,比如说一个16000长度的数组,<code>numpy_fft</code>接口会更快。在</p>
<p>您可以调用<a href="http://hgomersall.github.io/pyFFTW/pyfftw/interfaces/interfaces.html#additional-arguments" rel="nofollow">tweaks</a>来加快接口端的速度,但在您的情况下,这些不太可能有多大区别。在</p>
<p>在所有情况下,获得尽可能快的转换的最佳方法是直接使用<a href="http://hgomersall.github.io/pyFFTW/pyfftw/pyfftw.html#fftw-class" rel="nofollow">^{<cd6>} object</a>,而最简单的方法是使用<a href="http://hgomersall.github.io/pyFFTW/pyfftw/builders/builders.html" rel="nofollow">builders</a>函数。在您的情况下:</p>
<pre><code>t = pyfftw.builders.fft(a)
timeit t()
</code></pre>
<p>这样一来,pyfftw比128长度数组的<code>np.fft</code>快15倍。在</p>