Switch branches/tags
Nothing to show
Latest commit dac74c3 Aug 13, 2018
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
SPACE.md Jul 2, 2018
TIME-creation.md Aug 8, 2018
TIME-creation.svg Aug 7, 2018
TIME-extra.md Aug 7, 2018
TIME-extra.svg Aug 7, 2018
TIME.md Aug 8, 2018
TIME.svg Aug 7, 2018

## Results

Note: Some functions of some libraries are not implemented so we use a "hand-made" implementation. Defintions can be found in `bench/`. Suggestions are welcome!

## What is benchmarked

In this folder, you will find the lastest benchmarks of 4 haskell graphs libraries:

The benchmarks were realised using `Stack` and the `stack.yaml` configuration

## Tools

### Benchmarking routine

For the main results, we produce a generic list of edges (in ascending orders, but none of the libraries rely on this), create a graph from it, fully evaluate this graph to Normal Form, then pass it to then benchmarked function.

#### Creation

This may not reflect the reality, so we produced an alternative table where creation time (from a list of edges) is taken into account:

### The list of edges

Containers, Fgl and Hash-Graph are dealing well with a list of edges. This is not the case with Alga, so we produced an alternative table where we used the alga representation instead of a list of edges:

The functions are benchmarked against:

• A mesh: This graph can be represented as a regular tiling of a plane, with edges going only right or up. It is a good example of a sparse graph. For example a mesh with nine vertices can be viewed as:
6 7 8
3 4 5
1 1 2
• A clique: This a graph such as every two distinct vertices are adjacent. It is a good example of a dense graph. The list of the edges of a clique with 5 vertices will look like:
``````[(0,1),(0,2),(0,3),(0,4),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]
``````

The two first graphs are built with successive ten powers vertices. Here, with 1, 10, 100 and 1000 vertices.

### Types

Libraries are benchmarked against graphs with Int vertices.