GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — LMDB Write Performance Regression and Native Library Versioning · Issue #277 · lmdbjava/lmdbjava

LMDB Write Performance Regression and Native Library Versioning #277

New issue
Copy link
New issue
Copy link
Closed
Closed
LMDB Write Performance Regression and Native Library Versioning#277
Copy link
Assignees
bp-alex

Description

@bp-alex
bp-alex
opened on Nov 6, 2025
Issue body actions

Comprehensive LMDB benchmarking has revealed a ~10% write performance regression in LMDB 0.9.20+ compared to 0.9.17 and 0.9.18.

Write Performance

Tag ms/op vs 0.9.17 Maven Central
LMDB_0.9.17 75.790 baseline N/A
LMDB_0.9.18 74.909 -1.2% 0.9.18-1
LMDB_0.9.19 81.404 +7.4% 0.9.19-1
LMDB_0.9.20 83.459 +10.1% 0.9.20-1
LMDB_0.9.21 83.237 +9.8% 0.9.21-1
LMDB_0.9.22 83.027 +9.5% 0.9.22-1
LMDB_0.9.23 82.870 +9.3% 0.9.23-1
LMDB_0.9.24 82.952 +9.4% 0.9.24-1
LMDB_0.9.27 82.989 +9.5% N/A
LMDB_0.9.28 83.025 +9.5% N/A
LMDB_0.9.29 83.063 +9.6% 0.9.29-1
LMDB_0.9.30 83.237 +9.8% N/A
LMDB_0.9.31 88.419 +16.7% N/A
LMDB_0.9.33 83.304 +9.9% 0.9.33-2
LMDB_0.9.33 - - 0.9.33-3

The write regression has been reported upstream to LMDB in ITS#10406.

Read Performance

All read benchmarks show consistent stability (or slight improvement) in 0.9.33 vs 0.9.17.

Using Older LMDB Versions

As indicated above, older versions of LMDB are now packaged as org.lmdbjava:native artifacts which are compatible with LmdbJava. While it is strongly recommended to always use the native artifact that is a transitive dependency of org.lmdbjava:lmdbjava, users encountering unacceptably slow write pathways may prefer to explicitly declare an older native artifact version to achieve better write performance:

<dependency>
<groupId>org.lmdbjava</groupId>
<artifactId>lmdbjava</artifactId>
<version><!-- latest LmdbJava version --></version>
</dependency>
<dependency>
<groupId>org.lmdbjava</groupId>
<artifactId>native</artifactId>
<version>0.9.18-1</version>
</dependency>

As always, users can alternatively use the lmdbjava.native.lib system property to specify any arbitrary LMDB system library and ignore those available via LmdbJava artifacts.

New Benchmark Suite

This work also motivated the creation of a new benchmark not mentioned in #262. This new benchmark has the usual smoketest and benchmark profiles, nightly execution of the smoketest profile, plus dedicated result websites at https://lmdb-benchmark.lmdbjava.org/ and https://lmdb-smoketest.lmdbjava.org/. This will provide a quantifiable approach to isolating future LMDB library performance from LmdbJava overhead.

Activity

  1. bp-alex
    self-assigned this
    on Nov 6, 2025
  2. bp-alex
    closed this as completedon Nov 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

  • @bp-alex
    bp-alex

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.