(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

Reply via email to