[Haskell-cafe] Haskell vs Clean (speed comparison)

Gwern Branwen gwern0 at gmail.com
Sun May 3 14:29:37 EDT 2009


On Sun, May 3, 2009 at 2:24 PM, Daniel Carrera
<daniel.carrera at theingots.org> wrote:
> Hi,
>
> I think the mail server may have been acting up earlier. I sent this to
> Haskell-beginners, but it more properly belongs here.
>
> I found something interesting. "General wisdom" is that Clean (or OCaml) is
> faster than Haskell. The claim is often followed by a link to the Debian
> shootout. But on closer inspection, I question this conclusion. The Debian
> shoot out actually has four sets of benchmarks:
>
> 1) Intel 32-bit one core.
> 2) Intel 32-bit quad-core.
> 3) Intel 64-bit one core.
> 4) Intel 64-bit quad-core.
>
> It turns out that Clean is only faster for (1). For the others, Haskell is
> faster. Here I compare Haskell, Clean, OCaml, Lisp SBCL, C# Mono and Fortran
> because they are all in the same ball mark:
>
> 32-bit sing core [1]: Lisp, Fortran, Clean, Haskell, C# Mono.
> 32-bit quad-core [2]: Haskell, C# Mono, Lisp, Clean, Fortran.
> 64-bit sing core [3]: Fortran, OCaml, Haskell, Clean, C# Mono, Lisp.
> 64-bit quad-core [4]: Haskell, OCaml, Lisp, C# Mono, Fortran, Clean.
>
> Notes:
>
> * The order is "fast language first".
> * There are no results for OCaml for 32-bit.
> * "Lisp" is "List SCBL" whatever that is.
>
> Tentative conclusions:
>
> 1) Haskell makes very good use of multiple cores. It smokes Clean.
> 2) For single core, they are neck and neck. Whether Clean is faster depends
> non the architecture.
>
>
> What do you think?
>
> Daniel.
>
> P.S.
> [1]http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=all&d=data&ghc=on&ocaml=on&sbcl=on&csharp=on&ifc=on&clean=on&calc=calculate&box=1
> [2]http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=all&d=data&ghc=on&ocaml=on&sbcl=on&csharp=on&ifc=on&clean=on&calc=calculate&box=1
> [3]http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=all&d=data&ghc=on&ocaml=on&sbcl=on&csharp=on&ifc=on&clean=on&calc=calculate&box=1
> [4]http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all&d=data&ghc=on&ocaml=on&sbcl=on&csharp=on&ifc=on&clean=on&calc=calculate&box=1

Perhaps it's just that no one has parallelized the Clean programs?
Haskellers seem to care about the shootout programs much more than
Cleaners do.

eg. I randomly looked at Mandelbrot on [2].
clean: http://shootout.alioth.debian.org/u32q/benchmark.php?test=mandelbrot&lang=clean&id=2
haskell: http://shootout.alioth.debian.org/u32q/benchmark.php?test=mandelbrot&lang=ghc&id=2

I can't really read Clean, but it certainly looks as if it's making no
use of concurrency at all, while the Haskell one most certainly is.

-- 
gwern


More information about the Haskell-Cafe mailing list