调研主流开源fft c/c++库,最后选择了最为知名的fftw项目。 读完了官方最新版手册的大部分内容。和当前项目使用的简单实现做bechmarking,fftw的速度在我的测试环境中比简单实现快30~40倍。 测试环境: AMD 4G主频
44.1K采样10分钟 | 44.1K采样1分钟 | 44.1K采样10秒 | |
---|---|---|---|
简单实现 | 2.01017秒 | 0.203767秒 | 0.037936秒 |
fftw | 0.047039秒 | 0.00466秒 | 0.001126秒 |
summary | 42.3倍 | 43.7倍 | 33.7倍 |
帧长都是1024, 帧跳512。
虽然fftw的性能领先得非常地明显,但如果每一分钟左右,甚至更短的时间就计算一次,简单fft也能在一秒钟内完成。看来fft并非主要耗时部分。这次调研fft算法更新了我对fft的看法。我印象中FFT仅管是快速算法,仍然非常耗时,所以才需要DSP芯片。看来现在的通用CPU亦能应付大部分场景。