Is it possible to achieve 65 Micro Second FFT for 2 ^ 14 audio frames?

I am working on a Java project in which I need to achieve FFT conversion in 65 microseconds. FFT input is 2 ^ 14 real numbers. I tried the evey Java FFT library that I can find on the Internet like JTransforms and Apache Common Math, but none of them can get this speed. The fastest library is JTransforms, but it takes about 1 millisecond. So can someone tell me if it is possible to achieve such a speed (65 microseconds) in JAVA? As I know, the C FFTW library may be fast enough in this case, but I cannot use the JNI here, and I need a clean Java implementation, because it will be deployed as an Applet on the website.

PS my job is to transfer 2 ^ 14 audio frames to the frequency domain using FFT, and then apply the acoustic echo cancellation (MDF) algorithm to them. 2 ^ 14 is determined by the standard echo delay in a normal room.

Thanks!!!

+4
source share
2 answers

The runtime is highly dependent on the host computer configuration, and applets run on client computers. This means that different customers can observe different performances. And it is not very likely to get FFT from 2 ^ 14 numbers in 65 microseconds in a moderate configuration.

Here you can see these criteria of the best libraries such as FFTW. Even using FFTW, it takes more than 50 microseconds to calculate a 2-point FFT on a 2.80 GHz device with an Intel Core i7 processor with 4 GB memory.

+2
source

Did you try to repeat the conversion? Java typically starts optimizing after the runtime can collect information about code hotspots. The first (several) executions will take more time. You can also try to use the server VM (see. The real differences between the "java server" and "java -client", )

Before you try JNI, research its overhead, as it may take longer than 65 ΞΌs.

1 ms versus 65 ms seems too much difference, so I suspect the code is not optimized by the virtual machine.

+1
source

All Articles