FFTA.jl vs FFTW.jl Performance Benchmark Report

Note: This benchmark compares FFTA.jl (a pure Julia FFT implementation) against FFTW.jl (Julia bindings to the FFTW C library). Each package was benchmarked in a separate Julia process to ensure isolation and prevent interference.

Benchmark Configuration

Benchmarking Tool: BenchmarkTools.jl
Samples per size: 100
Evaluations per sample: 10
FFT Types: Complex FFT (ComplexF64) and Real FFT (Float64)
Total array sizes tested: 55
Report generated: 2026-01-19T16:42:39.909

Array Size Categories

Performance Visualizations

Complex FFT (ComplexF64 → ComplexF64)

Runtime/N vs N (All Categories)

Absolute Runtime (All Categories)

Odd Powers of 2

Even Powers of 2

Powers of 3

Composite

Prime Numbers

Detailed Results - Complex FFT

Real FFT (Float64 → ComplexF64)

Real FFT: The real FFT (rfft) is optimized for real-valued input data and produces approximately N/2+1 complex output values, exploiting the conjugate symmetry property. This makes it roughly 2x faster and more memory-efficient than complex FFT for real-valued signals.

Runtime/N vs N (All Categories)

Absolute Runtime (All Categories)

Odd Powers of 2

Even Powers of 2

Powers of 3

Composite

Prime Numbers

Detailed Results - Real FFT

Interpretation

The plots show Runtime/N vs N, which normalizes the runtime by the array size. For an optimal FFT implementation with O(N log N) complexity, this should scale as O(log N).

Key Observations: