是否可以为2^14音频帧实现65微秒FFT



我正在进行一个Java项目,需要在65微秒内实现FFT转换。FFT的输入是2^14个实数。我试过从互联网上找到的所有Java FFT库,比如JTransforms和Apache Common Math,但都不能达到这个速度。最快的库是JTransforms,但它仍然需要大约1毫秒。那么有人能告诉我在JAVA中是否有可能达到这样的速度(65微秒)吗?正如我所知,在这种情况下,C库FFTW可能足够快,但我不能在这里使用JNI,我需要一个纯Java实现,因为它将在网站中作为Applet部署。

附言:我的工作是用FFT将2^14个音频帧转移到频域,然后在它们上应用声学回声消除算法(MDF)。2^14由正常房间中的标准回波延迟决定。

谢谢!!!

执行时间高度依赖于主机配置,小程序在客户端计算机上执行。这意味着不同的客户可能会观察到不同的表现。在中等配置下,不太可能在65微秒内获得2^14个数字的FFT。

在这里,您可以看到像FFTW这样的最佳库的基准测试。即使使用FFTW,在具有2.80 Ghz、Intel Core i7 CPU和4Gb内存的机器上计算2^13点FFT也需要50微秒以上。

您是否尝试过重复执行转换?Java通常在运行时可以收集有关代码热点的信息之后开始优化。第一次(少数)处决将需要更长的时间。您也可以尝试使用服务器VM(请参阅"java-服务器"one_answers"java-客户端"之间的真正区别?)

在尝试JNI之前,研究一下它的开销,因为这实际上可能需要超过65µs的时间。

1ms与65µs的差异似乎太大了,因此我怀疑VM没有优化代码。

相关内容

  • 没有找到相关文章

最新更新