# Benchmarks This directory contains some micro-benchmarks that can help objectively establish the performance implications of a change, and also benchmarks that test the performance of different datastores using both the library and the SDK ## Manual usage ### Common Execute the following command at the top level of the repository: ```console $ cargo make bench ``` ### Specific datastore Execute the following commands at the top level of the repository: * Memory datastore using the lib or the SDK ```console $ cargo make bench-lib-mem $ cargo make bench-sdk-mem ``` * RocksDB datastore using the lib or the SDK ```console $ cargo make bench-lib-rocksdb $ cargo make bench-sdk-rocksdb ``` * FoundationDB datastore using the lib or the SDK * Start FoundationDB ``` $ docker run -ti -e FDB_NETWORKING_MODE=host --net=host foundationdb/foundationdb:7.1.30 ``` * Run the benchmarks ```console $ cargo make bench-lib-rocksdb $ cargo make bench-sdk-rocksdb ``` * WebSocket remote server using the SDK * Start SurrealDB server ``` $ cargo make build $ ./target/release/surreal start ``` * Run the benchmarks ```console $ cargo make bench-sdk-ws ``` ## Profiling Some of the benchmarks support CPU profiling: ```console cargo make bench --profile-time=5 ``` Once complete, check the `target/criterion/**/profile/flamegraph.svg` files.