-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
performance #1
Comments
I have created templated version of fft with one custom version of function per size. The overall performance is higher. Float32 version always the fastest. V8 v0.10 has higher threshold to start JIT optimizer. io.js is the most reliable performance and the best performance with standard Arrays. |
I feel that much more can be done with higher radix FFT. |
ProgressHere is some progress on FFT implementation. The same Radix-2 DIT generator. Produces asm.js code for Float32 and Float64 typed arrays. Observations
|
Here is some update on asm.js: Results
ConclusionLooks like strict p.s. I have added http://jsperf.com/fft for FFT 64K |
I have made some progress today -- separated As one can see:
I have published 64K versions here: https://jsperf.com/fft/2 |
Efficient FFT Algorithm and Programming Tricks |
Current FFT implementation uses classic Decimation in Time, Radix-2, in-place algorithm, which is far from being the best in class. I am comparing Float64, Float32, and Array implementations on three V8 based engines.
Raw benchmarks for (node 0.12.2, 0.10.38; iojs 1.6.3, FF36) can be found in Travis logs here: https://travis-ci.org/drom/fourier
Here are some charts I have crafted from the results on my Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz. most of points are less then ±5% variation:
Using FFT Benchmark Methodology from here: http://www.fftw.org/speed/method.html
Here is the chart from http://www.fftw.org/speed/CoreDuo-3.0GHz-icc64/ :
Which includes some state of art FFT implementations in C.
Double precision:
Single precision:
Obviously this just the beginning and we are x20 slower then the best;
and results are different with different version of V8 engine;
and because of dynamic nature of modern JavaScript run-time speed may suddenly change.
In my list to try:
Any other ideas are welcome!
The text was updated successfully, but these errors were encountered: