ARM Cortex-A9 で NEON に最適化された多くの FFT ライブラリを比較しましたが、" libav " は確かに最速の FFT コードですが、次のようになります。 - シングルスレッド - 1D FFT のみをサポート - 2 のべき乗次元のみをサポート、 - 実数の入力/出力に対するさまざまな最適化はありません (複素数から複素数への FFT のみです)。
一方、「FFTW」(公式バージョンまたは Vesperix バージョンのいずれか) はマルチスレッドで、2D FFT をサポートし、ペナルティがほとんどない非 2 のべき乗次元をサポートし、実際の入出力を完全に最適化します。複雑な入出力の代わりに。
したがって、FFT の要件によっては、余分な機能があるため、FFTW の方がプロジェクトにとって高速である可能性がありますが、libav が提供する FFT のみが必要な場合 (または、NEON とマルチスレッドを使用して自分で追加機能を作成する場合)、libav は実際には最速の 1D Complex-to-Complex FFT コード。
参考までに、FFTW NEON 最適化は、libav NEON 最適化を実行した人の学生によって実行されたようです。ですから、学生またはメンターからのコードのどちらがよいでしょうか ;-)
もう 1 つの問題は、libav が LGPL ライセンスを使用しているのに対し、FFTW は GPL ライセンスを使用しているため、FFTW の適切なライセンスを購入するために多額のお金を支払う意思がある場合を除き、より制限が厳しいことです。
(個人的には、libav の 1D FFT に加えて NEON とマルチスレッドを使用して、独自の 2D と実データの機能を作成することになりましたが、FFT の専門家ではなかったので、大変な作業でした!)