Warning, /multimedia/kdenlive/src/lib/external/kiss_fft/TIPS is written in an unsupported language. File is not indexed.
0001 Speed: 0002 * If you want to use multiple cores, then compile with -openmp or -fopenmp (see your compiler docs). 0003 Realize that larger FFTs will reap more benefit than smaller FFTs. This generally uses more CPU time, but 0004 less wall time. 0005 0006 * experiment with compiler flags 0007 Special thanks to Oscar Lesta. He suggested some compiler flags 0008 for gcc that make a big difference. They shave 10-15% off 0009 execution time on some systems. Try some combination of: 0010 -march=pentiumpro 0011 -ffast-math 0012 -fomit-frame-pointer 0013 0014 * If the input data has no imaginary component, use the kiss_fftr code under tools/. 0015 Real ffts are roughly twice as fast as complex. 0016 0017 * If you can rearrange your code to do 4 FFTs in parallel and you are on a recent Intel or AMD machine, 0018 then you might want to experiment with the USE_SIMD code. See README.simd 0019 0020 0021 Reducing code size: 0022 * remove some of the butterflies. There are currently butterflies optimized for radices 0023 2,3,4,5. It is worth mentioning that you can still use FFT sizes that contain 0024 these factors, they just won't be quite as fast. You can decide for yourself 0025 whether to keep radix 2 or 4. If you do some work in this area, let me 0026 know what you find. 0027 0028 * For platforms where ROM/code space is more plentiful than RAM, 0029 consider creating a hardcoded kiss_fft_state. In other words, decide which 0030 FFT size(s) you want and make a structure with the correct factors and twiddles. 0031 0032 * Frank van der Hulst offered numerous suggestions for smaller code size and correct operation 0033 on embedded targets. "I'm happy to help anyone who is trying to implement KISSFFT on a micro" 0034 0035 Some of these were rolled into the mainline code base: 0036 - using long casts to promote intermediate results of short*short multiplication 0037 - delaying allocation of buffers that are sometimes unused. 0038 In some cases, it may be desirable to limit capability in order to better suit the target: 0039 - predefining the twiddle tables for the desired fft size.