Benchmark inventory and decision procedure
Latest stable Based on Graph release 0.5.1
What exists in 0.5.1
Section titled “What exists in 0.5.1”The release contains four benchmark projects:
| Project | Workload | Harness and environment | Metric |
|---|---|---|---|
graph-benchmark | backend CRUD, traversal, domain, ingestion, API-model workloads | kotlinx-benchmark/JMH; TinkerGraph plus serial Testcontainers backends | average time: lower is better; selected throughput: higher is better |
graph-io-benchmark | CSV, NDJSON, GraphML, OkIO import/export/round trip | JMH, temporary files, in-memory TinkerGraph | ms/op, lower is better |
graph-age-benchmark | AGE vertex, batch, neighbor, shortest/all paths | JMH, PostgreSQL AGE Testcontainer, HikariCP | ms/op, lower is better |
graph-neo4j-benchmark | Neo4j vertex, batch, neighbor, shortest/all paths | JMH, Neo4j Testcontainer and Java driver | ms/op, lower is better |
Prerequisites: JDK 21, Docker for container-backed projects, release commit 3e0fa7cb9e3bc70c2743aeebda2487f3e45e4907, and an otherwise idle machine. Run container benchmarks serially.
./gradlew :graph-benchmark:mainGraphDomainWorkloadBenchmark./gradlew :graph-io-benchmark:smokeBenchmark./gradlew :graph-age-benchmark:benchmark./gradlew :graph-neo4j-benchmark:benchmarkExpected observation: each task emits JMH iteration lines and a JSON report below its module’s build/reports/benchmarks/ directory. The smoke task proves wiring, not performance.
Decision procedure
Section titled “Decision procedure”- Choose the workload that matches query shape, data size, and execution API.
- Compare rows only inside the same committed run: identical fixture, parameters, machine, fork, warmup, iteration, and unit.
- Prefer confidence intervals and repeated runs over a single score.
- Re-run with production-shaped data before choosing a backend.
- Include operational constraints that JMH does not measure.
Committed evidence includes backend results, graph-io results, and API-model JSON. These results do not prove horizontal scale, cloud latency, failover, durability, total cost, or that one backend wins under different run conditions.
Read graph operations, graph I/O, and AGE and Neo4j. Benchmark projects are release fixtures, not published libraries. Consumer applications select bluetape4k-dependencies:<ecosystem-version> and add required graph modules without individual versions.