Rust FFT benchmark
Single-threaded RustFFT and FFTW on complex float64 transforms. Runs on the server.
Speed (GFLOP/s) by array sizeLatency by array size
initial run · 1.63 s · 253 sizes
RustFFTFFTW
Input breakdown
| N | factors | shape | RustFFT | FFTW |
|---|---|---|---|---|
| 64 | 2^6 | power of two | 110 ns | 125 ns |
| 80 | 2^4 × 5 | smooth | 158 ns | 181 ns |
| 96 | 2^5 × 3 | smooth | 166 ns | 124 ns |
| 112 | 2^4 × 7 | mixed | 187 ns | 162 ns |
| 128 | 2^7 | power of two | 181 ns | 164 ns |
| 144 | 2^4 × 3^2 | smooth | 248 ns | 428 ns |
| 160 | 2^5 × 5 | smooth | 338 ns | 256 ns |
| 176 | 2^4 × 11 | mixed | 368 ns | 534 ns |
| 192 | 2^6 × 3 | smooth | 357 ns | 545 ns |
| 208 | 2^4 × 13 | mixed | 803 ns | 564 ns |
| 224 | 2^5 × 7 | mixed | 571 ns | 482 ns |
| 240 | 2^4 × 3 × 5 | smooth | 556 ns | 359 ns |
| 256 | 2^8 | power of two | 443 ns | 355 ns |
| 272 | 2^4 × 17 | mixed | 1.3 µs | 1.9 µs |
| 288 | 2^5 × 3^2 | smooth | 634 ns | 1.0 µs |
| 304 | 2^4 × 19 | mixed | 1.5 µs | 2.2 µs |
| 320 | 2^6 × 5 | smooth | 659 ns | 476 ns |
| 336 | 2^4 × 3 × 7 | mixed | 871 ns | 916 ns |
| 352 | 2^5 × 11 | mixed | 869 ns | 1.0 µs |
| 368 | 2^4 × 23 | mixed | 2.2 µs | 3.2 µs |
| 384 | 2^7 × 3 | smooth | 784 ns | 1.2 µs |
| 400 | 2^4 × 5^2 | smooth | 1.1 µs | 633 ns |
| 416 | 2^5 × 13 | mixed | 2.0 µs | 1.2 µs |
| 432 | 2^4 × 3^3 | smooth | 859 ns | 1.6 µs |
| 448 | 2^6 × 7 | mixed | 967 ns | 738 ns |
| 464 | 2^4 × 29 | mixed | 3.2 µs | 4.5 µs |
| 480 | 2^5 × 3 × 5 | smooth | 1.2 µs | 1.5 µs |
| 496 | 2^4 × 31 | mixed | 3.4 µs | 5.2 µs |
| 512 | 2^9 | power of two | 978 ns | 778 ns |
| 528 | 2^4 × 3 × 11 | mixed | 1.6 µs | 1.4 µs |
| 544 | 2^5 × 17 | mixed | 2.8 µs | 3.8 µs |
| 560 | 2^4 × 5 × 7 | mixed | 1.5 µs | 1.4 µs |
| 576 | 2^6 × 3^2 | smooth | 1.4 µs | 1.9 µs |
| 592 | 2^4 × 37 | mixed | 4.0 µs | 11.4 µs |
| 608 | 2^5 × 19 | mixed | 3.4 µs | 4.5 µs |
| 624 | 2^4 × 3 × 13 | mixed | 2.8 µs | 1.6 µs |
| 640 | 2^7 × 5 | smooth | 1.3 µs | 988 ns |
| 656 | 2^4 × 41 | mixed | 5.0 µs | 10.6 µs |
| 672 | 2^5 × 3 × 7 | mixed | 2.0 µs | 1.8 µs |
| 688 | 2^4 × 43 | mixed | 5.8 µs | 9.1 µs |
| 704 | 2^6 × 11 | mixed | 1.7 µs | 2.1 µs |
| 720 | 2^4 × 3^2 × 5 | smooth | 1.9 µs | 2.8 µs |
| 736 | 2^5 × 23 | mixed | 4.7 µs | 6.5 µs |
| 752 | 2^4 × 47 | mixed | 12.0 µs | 11.9 µs |
| 768 | 2^8 × 3 | smooth | 2.0 µs | 1.6 µs |
| 784 | 2^4 × 7^2 | mixed | 2.2 µs | 2.0 µs |
| 800 | 2^5 × 5^2 | smooth | 2.1 µs | 1.8 µs |
| 816 | 2^4 × 3 × 17 | mixed | 4.3 µs | 5.9 µs |
| 832 | 2^6 × 13 | mixed | 4.1 µs | 2.3 µs |
| 848 | 2^4 × 53 | mixed | 9.9 µs | 21.8 µs |
| 864 | 2^5 × 3^3 | smooth | 2.2 µs | 3.5 µs |
| 880 | 2^4 × 5 × 11 | mixed | 2.5 µs | 2.5 µs |
| 896 | 2^7 × 7 | mixed | 2.0 µs | 2.1 µs |
| 912 | 2^4 × 3 × 19 | mixed | 5.2 µs | 6.9 µs |
| 928 | 2^5 × 29 | mixed | 6.6 µs | 9.3 µs |
| 944 | 2^4 × 59 | mixed | 18.2 µs | 15.2 µs |
| 960 | 2^6 × 3 × 5 | smooth | 2.8 µs | 2.4 µs |
| 976 | 2^4 × 61 | mixed | 9.0 µs | 15.4 µs |
| 992 | 2^5 × 31 | mixed | 7.6 µs | 10.5 µs |
| 1008 | 2^4 × 3^2 × 7 | mixed | 2.7 µs | 2.6 µs |
| 1024 | 2^10 | power of two | 2.2 µs | 1.7 µs |
| 1040 | 2^4 × 5 × 13 | mixed | 5.0 µs | 3.1 µs |
| 1056 | 2^5 × 3 × 11 | mixed | 3.0 µs | 3.0 µs |
| 1072 | 2^4 × 67 | mixed | 9.8 µs | 21.4 µs |
| 1088 | 2^6 × 17 | mixed | 5.8 µs | 7.8 µs |
| 1104 | 2^4 × 3 × 23 | mixed | 7.5 µs | 9.5 µs |
| 1120 | 2^5 × 5 × 7 | mixed | 3.1 µs | 2.6 µs |
| 1136 | 2^4 × 71 | mixed | 11.8 µs | 26.3 µs |
| 1152 | 2^7 × 3^2 | smooth | 3.0 µs | 4.6 µs |
| 1168 | 2^4 × 73 | mixed | 9.5 µs | 17.4 µs |
| 1184 | 2^5 × 37 | mixed | 9.0 µs | 23.3 µs |
| 1200 | 2^4 × 3 × 5^2 | smooth | 3.8 µs | 3.6 µs |
| 1216 | 2^6 × 19 | mixed | 7.1 µs | 9.6 µs |
| 1232 | 2^4 × 7 × 11 | mixed | 3.5 µs | 4.6 µs |
| 1248 | 2^5 × 3 × 13 | mixed | 5.8 µs | 3.6 µs |
| 1264 | 2^4 × 79 | mixed | 16.0 µs | 21.3 µs |
| 1280 | 2^8 × 5 | smooth | 3.6 µs | 2.4 µs |
| 1296 | 2^4 × 3^4 | smooth | 3.5 µs | 5.5 µs |
| 1312 | 2^5 × 41 | mixed | 10.7 µs | 21.9 µs |
| 1328 | 2^4 × 83 | mixed | 15.6 µs | 34.8 µs |
| 1344 | 2^6 × 3 × 7 | mixed | 4.1 µs | 4.1 µs |
| 1360 | 2^4 × 5 × 17 | mixed | 8.0 µs | 10.0 µs |
| 1376 | 2^5 × 43 | mixed | 12.7 µs | 18.3 µs |
| 1392 | 2^4 × 3 × 29 | mixed | 10.1 µs | 14.4 µs |
| 1408 | 2^7 × 11 | mixed | 3.9 µs | 4.2 µs |
| 1424 | 2^4 × 89 | mixed | 12.4 µs | 33.6 µs |
| 1440 | 2^5 × 3^2 × 5 | smooth | 4.3 µs | 3.5 µs |
| 1456 | 2^4 × 7 × 13 | mixed | 7.6 µs | 5.7 µs |
| 1472 | 2^6 × 23 | mixed | 10.2 µs | 13.0 µs |
| 1488 | 2^4 × 3 × 31 | mixed | 11.8 µs | 15.7 µs |
| 1504 | 2^5 × 47 | mixed | 23.8 µs | 24.9 µs |
| 1520 | 2^4 × 5 × 19 | mixed | 9.8 µs | 12.1 µs |
| 1536 | 2^9 × 3 | smooth | 4.4 µs | 3.8 µs |
| 1552 | 2^4 × 97 | mixed | 12.7 µs | 22.5 µs |
| 1568 | 2^5 × 7^2 | mixed | 5.6 µs | 4.6 µs |
| 1584 | 2^4 × 3^2 × 11 | mixed | 5.1 µs | 6.3 µs |
| 1600 | 2^6 × 5^2 | smooth | 4.9 µs | 4.3 µs |
| 1616 | 2^4 × 101 | mixed | 17.5 µs | 24.2 µs |
| 1632 | 2^5 × 3 × 17 | mixed | 9.2 µs | 11.9 µs |
| 1648 | 2^4 × 103 | mixed | 22.1 µs | 37.8 µs |
| 1664 | 2^7 × 13 | mixed | 8.2 µs | 5.0 µs |
| 1680 | 2^4 × 3 × 5 × 7 | mixed | 6.3 µs | 5.6 µs |
| 1696 | 2^5 × 53 | mixed | 20.5 µs | 48.3 µs |
| 1712 | 2^4 × 107 | mixed | 18.2 µs | 39.1 µs |
| 1728 | 2^6 × 3^3 | smooth | 4.9 µs | 7.1 µs |
| 1744 | 2^4 × 109 | mixed | 13.8 µs | 33.0 µs |
| 1760 | 2^5 × 5 × 11 | mixed | 5.3 µs | 5.2 µs |
| 1776 | 2^4 × 3 × 37 | mixed | 14.0 µs | 34.2 µs |
| 1792 | 2^8 × 7 | mixed | 5.5 µs | 4.6 µs |
| 1808 | 2^4 × 113 | mixed | 14.9 µs | 37.3 µs |
| 1824 | 2^5 × 3 × 19 | mixed | 12.9 µs | 14.6 µs |
| 1840 | 2^4 × 5 × 23 | mixed | 14.4 µs | 24.6 µs |
| 1856 | 2^6 × 29 | mixed | 14.0 µs | 19.9 µs |
| 1872 | 2^4 × 3^2 × 13 | mixed | 8.9 µs | 7.0 µs |
| 1888 | 2^5 × 59 | mixed | 36.9 µs | 31.6 µs |
| 1904 | 2^4 × 7 × 17 | mixed | 11.2 µs | 15.2 µs |
| 1920 | 2^7 × 3 × 5 | smooth | 5.4 µs | 4.7 µs |
| 1936 | 2^4 × 11^2 | mixed | 6.3 µs | 9.1 µs |
| 1952 | 2^5 × 61 | mixed | 16.9 µs | 31.4 µs |
| 1968 | 2^4 × 3 × 41 | mixed | 18.1 µs | 33.1 µs |
| 1984 | 2^6 × 31 | mixed | 16.3 µs | 21.5 µs |
| 2000 | 2^4 × 5^3 | smooth | 6.7 µs | 6.8 µs |
| 2016 | 2^5 × 3^2 × 7 | mixed | 6.3 µs | 5.9 µs |
| 2032 | 2^4 × 127 | mixed | 17.8 µs | 30.4 µs |
| 2048 | 2^11 | power of two | 7.2 µs | 4.3 µs |
| 2064 | 2^4 × 3 × 43 | mixed | 18.6 µs | 28.2 µs |
| 2080 | 2^5 × 5 × 13 | mixed | 10.9 µs | 6.2 µs |
| 2096 | 2^4 × 131 | mixed | 26.2 µs | 53.8 µs |
| 2112 | 2^6 × 3 × 11 | mixed | 6.3 µs | 7.1 µs |
| 2128 | 2^4 × 7 × 19 | mixed | 13.8 µs | 17.8 µs |
| 2144 | 2^5 × 67 | mixed | 20.0 µs | 44.4 µs |
| 2160 | 2^4 × 3^3 × 5 | smooth | 5.9 µs | 9.6 µs |
| 2176 | 2^7 × 17 | mixed | 12.5 µs | 17.2 µs |
| 2192 | 2^4 × 137 | mixed | 30.9 µs | 49.9 µs |
| 2208 | 2^5 × 3 × 23 | mixed | 15.3 µs | 19.6 µs |
| 2224 | 2^4 × 139 | mixed | 35.8 µs | 52.3 µs |
| 2240 | 2^6 × 5 × 7 | mixed | 6.6 µs | 5.8 µs |
| 2256 | 2^4 × 3 × 47 | mixed | 36.3 µs | 36.4 µs |
| 2272 | 2^5 × 71 | mixed | 24.7 µs | 54.8 µs |
| 2288 | 2^4 × 11 × 13 | mixed | 12.6 µs | 10.6 µs |
| 2304 | 2^8 × 3^2 | smooth | 6.4 µs | 6.5 µs |
| 2320 | 2^4 × 5 × 29 | mixed | 17.5 µs | 23.6 µs |
| 2336 | 2^5 × 73 | mixed | 19.8 µs | 34.6 µs |
| 2352 | 2^4 × 3 × 7^2 | mixed | 8.0 µs | 8.7 µs |
| 2368 | 2^6 × 37 | mixed | 17.7 µs | 46.0 µs |
| 2384 | 2^4 × 149 | mixed | 27.5 µs | 49.8 µs |
| 2400 | 2^5 × 3 × 5^2 | smooth | 7.9 µs | 7.3 µs |
| 2416 | 2^4 × 151 | mixed | 24.1 µs | 41.4 µs |
| 2432 | 2^7 × 19 | mixed | 14.8 µs | 20.0 µs |
| 2448 | 2^4 × 3^2 × 17 | mixed | 13.3 µs | 19.9 µs |
| 2464 | 2^5 × 7 × 11 | mixed | 7.1 µs | 10.1 µs |
| 2480 | 2^4 × 5 × 31 | mixed | 20.2 µs | 26.2 µs |
| 2496 | 2^6 × 3 × 13 | mixed | 12.0 µs | 8.6 µs |
| 2512 | 2^4 × 157 | mixed | 31.0 µs | 39.8 µs |
| 2528 | 2^5 × 79 | mixed | 32.1 µs | 43.1 µs |
| 2544 | 2^4 × 3 × 53 | mixed | 31.4 µs | 63.7 µs |
| 2560 | 2^9 × 5 | smooth | 6.9 µs | 6.5 µs |
| 2576 | 2^4 × 7 × 23 | mixed | 18.1 µs | 24.9 µs |
| 2592 | 2^5 × 3^4 | smooth | 6.9 µs | 11.5 µs |
| 2608 | 2^4 × 163 | mixed | 22.5 µs | 47.3 µs |
| 2624 | 2^6 × 41 | mixed | 21.6 µs | 44.7 µs |
| 2640 | 2^4 × 3 × 5 × 11 | mixed | 9.7 µs | 8.9 µs |
| 2656 | 2^5 × 83 | mixed | 29.2 µs | 71.9 µs |
| 2672 | 2^4 × 167 | mixed | 29.2 µs | 63.4 µs |
| 2688 | 2^7 × 3 × 7 | mixed | 7.6 µs | 10.6 µs |
| 2704 | 2^4 × 13^2 | mixed | 29.1 µs | 12.1 µs |
| 2720 | 2^5 × 5 × 17 | mixed | 15.6 µs | 20.3 µs |
| 2736 | 2^4 × 3^2 × 19 | mixed | 16.3 µs | 23.2 µs |
| 2752 | 2^6 × 43 | mixed | 25.7 µs | 37.4 µs |
| 2768 | 2^4 × 173 | mixed | 29.8 µs | 62.7 µs |
| 2784 | 2^5 × 3 × 29 | mixed | 20.2 µs | 28.8 µs |
| 2800 | 2^4 × 5^2 × 7 | mixed | 9.2 µs | 8.9 µs |
| 2816 | 2^8 × 11 | mixed | 10.4 µs | 10.3 µs |
| 2832 | 2^4 × 3 × 59 | mixed | 55.0 µs | 46.1 µs |
| 2848 | 2^5 × 89 | mixed | 25.0 µs | 68.9 µs |
| 2864 | 2^4 × 179 | mixed | 29.8 µs | 63.6 µs |
| 2880 | 2^6 × 3^2 × 5 | smooth | 8.5 µs | 11.6 µs |
| 2896 | 2^4 × 181 | mixed | 25.9 µs | 52.0 µs |
| 2912 | 2^5 × 7 × 13 | mixed | 14.4 µs | 12.1 µs |
| 2928 | 2^4 × 3 × 61 | mixed | 25.1 µs | 45.3 µs |
| 2944 | 2^7 × 23 | mixed | 20.7 µs | 28.0 µs |
| 2960 | 2^4 × 5 × 37 | mixed | 23.1 µs | 56.2 µs |
| 2976 | 2^5 × 3 × 31 | mixed | 22.9 µs | 32.2 µs |
| 2992 | 2^4 × 11 × 17 | mixed | 19.1 µs | 26.7 µs |
| 3008 | 2^6 × 47 | mixed | 47.7 µs | 49.0 µs |
| 3024 | 2^4 × 3^3 × 7 | mixed | 9.3 µs | 11.8 µs |
| 3040 | 2^5 × 5 × 19 | mixed | 19.5 µs | 23.7 µs |
| 3056 | 2^4 × 191 | mixed | 48.4 µs | 63.7 µs |
| 3072 | 2^10 × 3 | smooth | 9.2 µs | 9.5 µs |
| 3088 | 2^4 × 193 | mixed | 25.2 µs | 53.6 µs |
| 3104 | 2^5 × 97 | mixed | 27.2 µs | 45.2 µs |
| 3120 | 2^4 × 3 × 5 × 13 | mixed | 17.7 µs | 10.8 µs |
| 3136 | 2^6 × 7^2 | mixed | 10.6 µs | 10.5 µs |
| 3152 | 2^4 × 197 | mixed | 33.2 µs | 48.1 µs |
| 3168 | 2^5 × 3^2 × 11 | mixed | 12.6 µs | 13.2 µs |
| 3184 | 2^4 × 199 | mixed | 27.5 µs | 48.2 µs |
| 3200 | 2^7 × 5^2 | smooth | 9.6 µs | 10.1 µs |
| 3216 | 2^4 × 3 × 67 | mixed | 30.3 µs | 64.2 µs |
| 3232 | 2^5 × 101 | mixed | 38.0 µs | 48.3 µs |
| 3248 | 2^4 × 7 × 29 | mixed | 24.7 µs | 36.2 µs |
| 3264 | 2^6 × 3 × 17 | mixed | 19.7 µs | 25.1 µs |
| 3280 | 2^4 × 5 × 41 | mixed | 28.0 µs | 55.0 µs |
| 3296 | 2^5 × 103 | mixed | 45.6 µs | 76.1 µs |
| 3312 | 2^4 × 3^2 × 23 | mixed | 23.2 µs | 32.4 µs |
| 3328 | 2^8 × 13 | mixed | 17.8 µs | 12.9 µs |
| 3344 | 2^4 × 11 × 19 | mixed | 22.6 µs | 31.4 µs |
| 3360 | 2^5 × 3 × 5 × 7 | mixed | 13.2 µs | 12.7 µs |
| 3376 | 2^4 × 211 | mixed | 34.0 µs | 82.3 µs |
| 3392 | 2^6 × 53 | mixed | 41.7 µs | 87.7 µs |
| 3408 | 2^4 × 3 × 71 | mixed | 37.0 µs | 83.6 µs |
| 3424 | 2^5 × 107 | mixed | 36.0 µs | 78.2 µs |
| 3440 | 2^4 × 5 × 43 | mixed | 32.6 µs | 46.8 µs |
| 3456 | 2^7 × 3^3 | smooth | 10.3 µs | 16.6 µs |
| 3472 | 2^4 × 7 × 31 | mixed | 28.1 µs | 39.3 µs |
| 3488 | 2^5 × 109 | mixed | 30.0 µs | 65.2 µs |
| 3504 | 2^4 × 3 × 73 | mixed | 32.7 µs | 53.5 µs |
| 3520 | 2^6 × 5 × 11 | mixed | 12.3 µs | 14.3 µs |
| 3536 | 2^4 × 13 × 17 | mixed | 40.9 µs | 31.6 µs |
| 3552 | 2^5 × 3 × 37 | mixed | 26.6 µs | 69.2 µs |
| 3568 | 2^4 × 223 | mixed | 40.2 µs | 93.3 µs |
| 3584 | 2^9 × 7 | mixed | 10.4 µs | 13.2 µs |
| 3600 | 2^4 × 3^2 × 5^2 | smooth | 12.6 µs | 17.8 µs |
| 3616 | 2^5 × 113 | mixed | 31.5 µs | 75.4 µs |
| 3632 | 2^4 × 227 | mixed | 41.2 µs | 79.0 µs |
| 3648 | 2^6 × 3 × 19 | mixed | 22.8 µs | 29.6 µs |
| 3664 | 2^4 × 229 | mixed | 53.2 µs | 81.5 µs |
| 3680 | 2^5 × 5 × 23 | mixed | 27.1 µs | 32.8 µs |
| 3696 | 2^4 × 3 × 7 × 11 | mixed | 14.8 µs | 14.2 µs |
| 3712 | 2^7 × 29 | mixed | 28.1 µs | 40.9 µs |
| 3728 | 2^4 × 233 | mixed | 65.2 µs | 91.8 µs |
| 3744 | 2^5 × 3^2 × 13 | mixed | 19.1 µs | 16.0 µs |
| 3760 | 2^4 × 5 × 47 | mixed | 61.4 µs | 60.6 µs |
| 3776 | 2^6 × 59 | mixed | 73.9 µs | 64.0 µs |
| 3792 | 2^4 × 3 × 79 | mixed | 46.7 µs | 64.6 µs |
| 3808 | 2^5 × 7 × 17 | mixed | 22.6 µs | 31.4 µs |
| 3824 | 2^4 × 239 | mixed | 54.9 µs | 80.1 µs |
| 3840 | 2^8 × 3 × 5 | smooth | 13.0 µs | 15.7 µs |
| 3856 | 2^4 × 241 | mixed | 35.7 µs | 55.3 µs |
| 3872 | 2^5 × 11^2 | mixed | 15.0 µs | 20.1 µs |
| 3888 | 2^4 × 3^5 | smooth | 12.6 µs | 19.3 µs |
| 3904 | 2^6 × 61 | mixed | 33.8 µs | 65.1 µs |
| 3920 | 2^4 × 5 × 7^2 | mixed | 14.7 µs | 12.9 µs |
| 3936 | 2^5 × 3 × 41 | mixed | 33.2 µs | 65.4 µs |
| 3952 | 2^4 × 13 × 19 | mixed | 41.9 µs | 36.5 µs |
| 3968 | 2^7 × 31 | mixed | 32.2 µs | 45.0 µs |
| 3984 | 2^4 × 3 × 83 | mixed | 47.3 µs | 99.4 µs |
| 4000 | 2^5 × 5^3 | smooth | 14.8 µs | 13.1 µs |
| 4016 | 2^4 × 251 | mixed | 49.8 µs | 66.6 µs |
| 4032 | 2^6 × 3^2 × 7 | mixed | 13.6 µs | 14.6 µs |
| 4048 | 2^4 × 11 × 23 | mixed | 30.5 µs | 41.3 µs |
| 4064 | 2^5 × 127 | mixed | 36.3 µs | 61.7 µs |
| 4080 | 2^4 × 3 × 5 × 17 | mixed | 24.6 µs | 31.8 µs |
| 4096 | 2^12 | power of two | 26.2 µs | 16.0 µs |