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 — Improve iterator performance and add better stream support · Issue #269 · lmdbjava/lmdbjava

Improve iterator performance and add better stream support #269

New issue
Copy link
New issue
Copy link
Open
Feature
#270
Open
Improve iterator performance and add better stream support#269
Feature
#270
Copy link
Assignees
stroomdev66
Labels
enhancementAdditional or new functionalityAdditional or new functionality

Description

@stroomdev66
stroomdev66
opened on Nov 4, 2025
Issue body actions

I've implemented replacements for CursorIterable that appear to be faster. Raising this issue to coincide with the iterator-performance branch.

Activity

  1. stroomdev66
    self-assigned this
    on Nov 4, 2025
  2. stroomdev66
    added the
    Feature
    issue type on Nov 4, 2025
  3. stroomdev66
    added
    enhancementAdditional or new functionalityAdditional or new functionality
    on Nov 4, 2025
  4. stroomdev66
    added a commit that references this issue on Nov 4, 2025

    #269 Initial iterator performance enhancements and testing.

    d6e0ca1
  5. stroomdev66 commented on Nov 4, 2025

    @stroomdev66
    stroomdev66
    on Nov 4, 2025
    CollaboratorAuthor
    More actions

    See draft PR #270

  6. stroomdev66 commented on Nov 4, 2025

    @stroomdev66
    stroomdev66
    on Nov 4, 2025
    CollaboratorAuthor
    More actions

    My initial, and admittedly not very scientific, performance tests show the following improvements:

    Image

    The X axis shows different key ranges and the Y axis is milliseconds spent executing range scans.

    Reacted by Cosimo Damiano Prete
  7. stroomdev66 commented on Nov 4, 2025

    @stroomdev66
    stroomdev66
    on Nov 4, 2025
    CollaboratorAuthor
    More actions

    Another set of tests with 100M rows

    Image
    Reacted by Cosimo Damiano Prete
  8. stroomdev66
    changed the title [-]Improve iterator performance and add better streaming support[/-] [+]Improve iterator performance and add better stream support[/+] on Nov 4, 2025
  9. stroomdev66
    added 8 commits that reference this issue on Nov 5, 2025

    #269 Initial iterator performance enhancements and testing.

    d56b0d4

    #269 Initial iterator performance enhancements and testing.

    8cecdd6

    #269 Initial iterator performance enhancements and testing.

    aecdf51

    #269 Initial iterator performance enhancements and testing.

    a7a41f4

    #269 Initial iterator performance enhancements and testing.

    f23de09

    #269 Initial iterator performance enhancements and testing.

    69eb5b7

    #269 Initial iterator performance enhancements and testing.

    915edce

    #269 Initial iterator performance enhancements and testing.

    7d04445
  10. cdprete commented on Feb 20, 2026

    @cdprete
    cdprete
    on Feb 20, 2026
    Contributor
    More actions

    Very nice to see the support for Stream<T> now being offered 👍
    I will be able with this to drop some code from my side which was doing the same 😁

  11. bernardladenthin
    added a commit that references this issue on Jul 24, 2026

    Add tests for iterator/stream helpers; fix LmdbStream SORTED contract

    716e7f0
  12. bernardladenthin commented on Jul 24, 2026

    @bernardladenthin
    bernardladenthin
    on Jul 24, 2026
    More actions

    I spent some time reviewing the iterator-performance branch and opened a small follow-up PR stacked on it (targets iterator-performance, not master): #292.

    It fixes a couple of things in the new iterator/stream code and adds the missing test coverage:

    • Reverse prefix iteration could silently drop rows when the prefix ends in 0xFF. incrementLeastSignificantByte kept the trailing 0xFF ({0x01,0xFF} → {0x02,0xFF} instead of the tight {0x02}), so the reverse-prefix seek over-shot and iteration yielded nothing. Fixed across all four proxies, with a regression test.
    • LmdbStream's Spliterator advertised SORTED with a null comparator. Now reports ORDERED | NONNULL and getComparator() throws per the contract; the dead comparator stubs are removed.
    • KeyRange.getType() returned null for builder-created ranges (would NPE the legacy CursorIterable path) — now derives the equivalent KeyRangeType.
    • Added unit/integration coverage for the buffer-proxy prefix/int-key helpers, KeyRange builder, Dbi.newIterate/stream/getNameAsString, and the spliterator contract.

    Full suite is green (excluding the pre-existing flaky TestLmdbStreamBenchmark). The bigger design calls (API naming, retiring CursorIterable, rebasing, etc.) are intentionally left for you — noted in the PR. Happy to adjust anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

  • @stroomdev66
    stroomdev66

Labels

enhancementAdditional or new functionalityAdditional or new functionality

Type

Feature

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.