[Haskell-cafe] Re: Haskell performance in heavy numerical computations

Simon Marlow simonmarhaskell at gmail.com
Mon Jul 10 05:12:13 EDT 2006


Bulat Ziganshin wrote:

> numerical speed is poor in ghc 6.4, according to my tests. it's 10-20
> times worse than of gcc. afair, the mandelbrot benchmark of Great
> Language Shootout proves this - despite all optimization attempts,
> GHC entry is still 5-10 times slower than gcc/ocaml/clean ones

We average 1.3x slower than C in the shootout. Thanks to Don Stewart for 
the following stats...

The numerical floating-point-intensive benchmarks:

     mandelbrot  2.7x C    (Clean 1.7x, OCaml 2.4x, C++ 2.6x)
     n-body      2.1x C    (Clean 0.9x, OCaml 1.3x, C++ 1.4x)

http://shootout.alioth.debian.org/gp4/benchmark.php?test=mandelbrot&lang=all
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=all

So we're still only 2-3 times slower than C on these benchmarks, and we 
know how to improve them.

In other cases, for example some integer/floating math, we beat GCC: 
partial-sums:

http://shootout.alioth.debian.org/gp4/benchmark.php?test=partialsums&lang=all

The full list, Haskell vs. C:

     0.1x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=chameneos&lang=all
     0.1x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=message&lang=all
     0.1x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=regexdna&lang=all
     0.5x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=binarytrees&lang=all
     0.7x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nsieve&lang=all
     0.9x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nsievebits&lang=all
     0.9x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=partialsums&lang=all
     1.3x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=recursive&lang=all
     1.6x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=all
     1.8x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=fasta&lang=all
     1.8x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=all
     2.3x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=spectralnorm&lang=all
  *  2.5x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=sumcol&lang=all
     2.7x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=mandelbrot&lang=all
  *  3.2x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=fannkuch&lang=all
  * 11.0x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=revcomp&lang=all
  * 22.0x C 
http://shootout.alioth.debian.org/gp4/benchmark.php?test=knucleotide&lang=all

  * Known, or expected, to improve under Data.ByteString

Cheers,
	Simon


More information about the Haskell-Cafe mailing list