(I take it you accidently wrote to fa.haskell, which is just a mirror of -cafe
and -beginners, so I'm cc-ing the Café with a full quote.)
Masayuki Takagi:
I'm writing fluid simulation programs with SPH(Smoothed particle
hydrodynamics) in Haskell and C++. (The purpose that I write in two
languages is to make a workflow that first i write in Haskell for
rapid prototyping and accuracy then rewrite in C++ for performance.)
I've compared them in performance. Then, although I have already done
optimization with profiler, the Haskell code is 20 times slower than
the C++ code.
I think the performance of the Haskell code is so slow that there can
be room for optimization. I'm happy if the Haskell code work 3 times
slower than the C++ code at worst.
How can I make the Haskell code faster?
What information should I refer?
The codes are here:
http://kamonama.sakura.ne.jp/sph/20091101/sph.hs.zip
http://kamonama.sakura.ne.jp/sph/20091101/sph.cpp
To run the code in Haskell:
$ ghc --make -O sph.hs
$ ./sph 300
(300 is the time step to be conputed)
To run the code in C++:
$ g++ -O2 -o sph sph.cpp
$ ./sph 300
(300 is the time step to be conputed)
thanks
I've not looked at the code, but you'll want ghc to do better optimizations
than -O. -O2 is what you should use in general. Also, number-crunching often
profits from -fexcess-precision.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe