Skip to content
Beguet Romain edited this page May 8, 2015 · 23 revisions

Running the Benchmarks

After having cloned the repository, move to its root and simply run sbt :

/path/to/repository/>sbt
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading project definition from /path/to/repository/project
[info] Set current project to root (in build file:/path/to/repository/)
>

You can now choose which benchmark to run by typing the project command followed by the name of the benchmark, and then run. For example, type the following commands in order to run the mbarrays benchmark :

> project mbarrays
[info] Set current project to mbarrays (in build file:/path/to/repository/)
> run

Description of the benchmarks

Here are the possible benchmarks that you can run :

  1. mbarrays : This benchmark tries to perform the maximum of read and write operations on both raw Arrays and MbArrays.
  2. mergesort-no-mb : This is a classic mergesort benchmark using different implementations that are all based on raw arrays.
  3. mergesort-mb : This is the same benchmark as above, except that it uses the Miniboxing plugin, and includes the implementation of mergesort using MbArray.
  4. mergesort-comp-no-mb : Same mergesort as 2, except it uses a custom Comparator object instead of scala functions to abstract over the comparison operations.
  5. mergesort-comp-mb : same as above, but uses MbArray with the Miniboxingplugin.

Results on my machine

My machine's configuration :

  • Intel Core i7-4500U (@ 2.95 GHz when running the benchmarks)
  • 8 GB of RAM
  • Windows 8 64bits

The following results are obtained by running the benchmarks with the above configuration.

  1. mbarrays.

    • Array : ~715 milliseconds per loop iteration
    • MbArray : ~1130 milliseconds per loop iteration
  2. mergesort-no-mb. (results are in milliseconds)

    Array Size Array[Int] Array[Any] Array with ClassTag
    500'000 132.85 487.64 766.07
    1'000'000 309.39 1134.16 1639.08
    3'000'000 855.28 4110.89 5349.12
  3. mergesort-mb. (results are in milliseconds)

    Array Size Array[Int] Array[Any] Array with ClassTag MbArray
    500'000 276.21 573.98 856.34 521.46
    1'000'000 558.33 1488.10 1876.09 1089.25
    3'000'000 1923.40 4444.17 6009.22 3536.76
  4. mergesort-comp-no-mb. (results are in milliseconds)

    Array Size Array[Int] Array[Any] Array with ClassTag
    500'000 738.49 460.81 849.77
    1'000'000 1454.07 1128.43 1575.86
    3'000'000 4333.04 3936.09 5219.20
  5. mergesort-comp-mb. (results are in milliseconds)

    Array Size Array[Int] Array[Any] Array with ClassTag MbArray
    500'000 617.34 451.27 767.31 582.29
    1'000'000 1356.63 1017.45 1620.04 1050.57
    3'000'000 4176.77 3954.87 5308.42 3448.84