Documentation
¶
Overview ¶
Command ggserver runs GoGraph behind its own Bolt server as a standalone process, so that a comparative benchmark can drive it exactly as it drives Neo4j and Memgraph: over a socket, from a client that lives in a different process.
This exists for one measurement reason. When the GoGraph server is hosted inside the benchmark process, the load generator and the engine share one Go runtime and one GOMAXPROCS budget, while the containerised rivals get a CPU allocation of their own and are driven by a client that competes with nothing. Any throughput compared across that asymmetry measures the harness as much as the engine. Running the engine here, under its own GOMAXPROCS, removes the asymmetry: every target becomes a CPU-capped server process addressed over TCP.
In the comparison this binary was built for it runs CONTAINERISED, with the same --cpus cap as the rivals and with the load generator in a container of its own on the same network, because reaching a macOS host process through the virtual machine's port-forward costs more per round trip than the query costs to execute. See docs/concurrency-vs-neo4j-memgraph-2026-08-11.md §2.1.
Usage:
GOMAXPROCS=4 go run ./bench/comparison/ggserver -addr 127.0.0.1:7689
The server is in-memory only: durability is deliberately out of scope here, because the rivals are configured for their own default durability and the comparison this binary serves is one of concurrency, not of commit cost.