Performance

krontogiannis edited this page Feb 5, 2014 · 5 revisions
Clone this wiki locally

This page demonstrates the performance of LinqOptimizer in C# and F# compared to the Linq and F# Seq implementations respectively. In the benchmarks we used :

  • The CLR/.NET 4.5.1 version on a Windows Server 2012 R2 machine.
  • The Mono JIT compiler 3.2.3 on a openSUSE 12.3 machine using the sgen garbage collector.
  • The machine used is a Windows Azure VM of Extra Large size (8 cores, 14GB memory).
  • The LinqOptimizer 0.5.2 development version.

In the following benchmarks we compare:

  • The sequential/parallel Linq implementation in C#, with the sequential/parallel LinqOptimizer implementation.
  • The sequential F# Seq implementation with the sequential LingOptimizer F# implementation, and the PLinq in F# with the parallel LinqOptimizer F#.

The source code of the benchmarks can be found in the benchmarks branch.

Benchmarks description

  • Sum. Compute the sum 200,000,000 random floating point values.
  • Sum of squares. Compute the sum the squares of 200,000,000 random floating point values.
  • Cartesian product. Compute the cartesian product of 20,000,000 * 20 random floating point values.
  • Group by. Group 20,000,000 numbers into 200,000 groups and return the number of values that belong to each group.
  • Pythagorean triples. Compute the number of Pythegorean triples bellow 1,000.

Benchmarks

Notes

* The sequential Linq GroupBy test in mono failed to complete in reasonable time.