Are all your benchmarks done on a 64 bit system?

They are. Here's one comparison with 32 bit (for complex single
precision transform using sse)if you are interested in that:
http://imgur.com/CTuCD . The 32 bit executable is slower, probably
because there are less general purpose and SSE registers on x86
than on x86_64.

If you are right and this is a problem, are Andrei and others accepting to change this little part of Phobos? If the answer is positive, are you interested in creating a GIT patch that changes that?

I think that poor precision is a problem. I have checked now and
std.numeric.Fft does indeed use floats for the lookup table.
The precision problem could be solved by either changing that to
real or by changing Fft to a template and using whatever the type
parameter is. Just changing float to real doesn't require changing
the API, but would probably result in worse performance.

I haven't talked to Andrei or others about changing it, but I am
willing to write a patch that changes the API, if it would be
decided that would be the best thing to do. If it would be decided
that it's best to just change the type of the lookup table that's
trivial anyway, since it's just one typedef.

Reply via email to