mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-27 11:43:49 +00:00
f8969ad7d4
Summary: Performance improvements for `get()` paths in the RocksJava API (JNI). Document describing the performance results. Replace uses of the legacy `DB::Get()` method wrapper returning data in a `std::string` with direct calls to `DB::Get()` passing a pinnable slice to receive this data. Copying from a pinned slice direct to the destination java byte array, without going via an intervening std::string, is a major performance gain for this code path. Note that this gain only comes where `DB::Get()` is able to return a pinned buffer; where it has to copy into the buffer owned by the slice, there is still the intervening copy and no performance gain. It may be possible to address this case too, but it is not trivial. Pull Request resolved: https://github.com/facebook/rocksdb/pull/10970 Reviewed By: pdillinger Differential Revision: D42125567 Pulled By: ajkr fbshipit-source-id: b7a4df7523b0420cadb1e9b6c7da3ec030a8da34 |
||
---|---|---|
.. | ||
src/main/java/org/rocksdb | ||
LICENSE-HEADER.txt | ||
pom.xml | ||
README.md |
JMH Benchmarks for RocksJava
These are micro-benchmarks for RocksJava functionality, using JMH (Java Microbenchmark Harness).
Compiling
Note: This uses a specific build of RocksDB that is set in the <version>
element of the dependencies
section of the pom.xml
file. If you are testing local changes you should build and install a SNAPSHOT version of rocksdbjni, and update the pom.xml
of rocksdbjni-jmh file to test with this.
For instance, this is how to install the OSX jar you just built for 6.26.0
$ mvn install:install-file -Dfile=./java/target/rocksdbjni-6.26.0-SNAPSHOT-osx.jar -DgroupId=org.rocksdb -DartifactId=rocksdbjni -Dversion=6.26.0-SNAPSHOT -Dpackaging=jar
$ mvn package
Running
$ java -jar target/rocksdbjni-jmh-1.0-SNAPSHOT-benchmarks.jar
NOTE: you can append -help
to the command above to see all of the JMH runtime options.