diff options
author | Mark Borgerding <mark@borgerding.net> | 2010-01-21 21:09:26 -0500 |
---|---|---|
committer | Mark Borgerding <mark@borgerding.net> | 2010-01-21 21:09:26 -0500 |
commit | 7a6cb2a39cfae99ca0bfb1f467c3616242acd22a (patch) | |
tree | e013650afb38c66c5c5f445d678bb1989568a7d1 /bench/benchFFT.cpp | |
parent | f1a025185a25e53eb1c4817141c0523cf48f70bc (diff) |
added benchmark for unscaled and half-spectrum FFTs
Diffstat (limited to 'bench/benchFFT.cpp')
-rw-r--r-- | bench/benchFFT.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/bench/benchFFT.cpp b/bench/benchFFT.cpp index 3104929ba..0f0c9bb93 100644 --- a/bench/benchFFT.cpp +++ b/bench/benchFFT.cpp @@ -54,7 +54,7 @@ template <> string nameof<long double>() {return "long double";} using namespace Eigen; template <typename T> -void bench(int nfft,bool fwd) +void bench(int nfft,bool fwd,bool unscaled=false, bool halfspec=false) { typedef typename NumTraits<T>::Real Scalar; typedef typename std::complex<Scalar> Complex; @@ -63,16 +63,28 @@ void bench(int nfft,bool fwd) vector<Complex > outbuf(nfft); FFT< Scalar > fft; + if (unscaled) { + fft.SetFlag(fft.Unscaled); + cout << "unscaled "; + } + if (halfspec) { + fft.SetFlag(fft.HalfSpectrum); + cout << "halfspec "; + } + + + std::fill(inbuf.begin(),inbuf.end(),0); fft.fwd( outbuf , inbuf); BenchTimer timer; timer.reset(); for (int k=0;k<8;++k) { timer.start(); - for(int i = 0; i < nits; i++) - if (fwd) + if (fwd) + for(int i = 0; i < nits; i++) fft.fwd( outbuf , inbuf); - else + else + for(int i = 0; i < nits; i++) fft.inv(inbuf,outbuf); timer.stop(); } @@ -86,6 +98,7 @@ void bench(int nfft,bool fwd) mflops /= 2; } + if (fwd) cout << " fwd"; else @@ -100,6 +113,9 @@ int main(int argc,char ** argv) bench<complex<float> >(NFFT,false); bench<float>(NFFT,true); bench<float>(NFFT,false); + bench<float>(NFFT,false,true); + bench<float>(NFFT,false,true,true); + bench<complex<double> >(NFFT,true); bench<complex<double> >(NFFT,false); bench<double>(NFFT,true); |