# Performance Benchmark Report

## Environment

### Hardware

- Dell Precison M3800 Laptop
- 8x Intel(R) Core(TM) i7-4712HQ CPU @ 2.30GHz
- 12Gb RAM
- SSD

### Software

- Arch Linux OS
- glibc 2.26-11
- python 3.5.4
- lmdb 0.9.21-1
- db (BerkeleyDB) 5.3.28-3

### Benchmark script

[Generator script](../../util/benchmark.py)

The script was run with default values: 10,000 children under the same parent,
PUT requests.

### Data Set

Synthetic graph created by the benchmark script. The graph is unique for each
request and consists of 200 triples which are partly random data, with a
consistent size and variation:

- 50 triples have an object that is a URI of an external resource (50 unique
  predicates; 5 unique objects).
- 50 triples have an object that is a URI of a repository-managed resource
  (50 unique predicates; 5 unique objects).
- 100 triples have an object that is a 64-character random Unicode string
  (50 unique predicates; 100 unique objects).

## Results

### FCREPO/Modeshape 4.7.5

15'45" running time
0.094" per resource
3.4M triples total in repo at the end of the process

Retrieval of parent resource (~10000 triples), pipe to /dev/null: 3.64"

Peak memory usage: 2.47Gb
Database size: 3.3 Gb


### LAKEsuperior Alpha 6, LMDB Back End

25' running time
0.152" per resource

Some gaps every ~40-50 requests, probably disk flush

Retrieval of parent resource (10K triples), pipe to /dev/null: 2.13"

Peak memory usage: ~650 Mb (3 idle workers, 1 active)
Database size: 523 Mb

