Haskell vs. F# vs. Scala: A High-level Language Features and Parallelism Support Comparison

Prabhat Totoo, Pantazis Deligiannis, Hans-Wolfgang Loidl.

To appear in FHPC'12, ACM SIGPLAN Workshop on Functional High-Performance Computing, Copenhagen, Denmark, 15 September 2012

This paper provides a performance and programmability comparison of high-level parallel programming support in Haskell, F# and Scala. Developing several parallel versions, we employ skeleton-based, semi-explicit and explicit approaches to parallelism. We focus on advanced language features for separating computational and coordination aspects of the code and tuning performance. We also assess the impact of functional purity and multi-paradigm design of the languages on program development and performance.

Basis for these comparisons are several Barnes-Hut implementations of the n-body problem in all three languages, on both Linux and Windows. Our performance measurements on state-of-the-art multi-cores achieve a speedup up to 5.62 (on 8 cores) with a highly-tuned Haskell version. For comparable implementations in Scala and F# we achieve speedups of 4.51 (on 8 cores) and 2.28 (on 4 cores), respectively. We observe that near best speedups are achieved using the highest level abstraction in these languages.

Available in: pdf

Benchmark programs: Benchmark tarball (.tar.bz2)