RoaringBitmap / RoaringBitmap/RoaringBitmap

[64 bit] what value does HighLowContainer provide?

Open
#792 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
3.9k
Forks
592
Avg merge
5d 21h
Merged PRs (30d)
2

Description

This is more of a design discussion than an issue and I assume it will be contentous --- but --

Art contains a simple trie where the LeafNode holds a long reference. This is the index of the Container in the HighLowContainer, which hold li aList<Container[]>

All of the access is to the Comtainer is via the Trie, so every access to the Container has to follow an additional step

The HighLowContainer holdes the references to the Containers that could be held by the LeafNode
The reference to the container is 32 or 64 bits, so at best the LeafNode would be the same memory footprint, and at worst its holdiing 32 bits more that it needs

The highLowContainer holds the object references that the LeafNode could hold, and the minimal overheads of the arrays and list ( assuming that the cardinaity is high).

HighLowContainer leaks memory. (Removes leave holes in the arrays)

The only usage of the HighLowContainer without Art (that I can see) is the runOptimise, whih could use the other iterator

So - as I se it , it adds to the code, adds to the cpu, and ads to the momenry. I dont see the advantage

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the Art trie, LeafNode, HighLowContainer, and runOptimise paths mentioned in the issue; compare how Container references are accessed and removed. A useful outcome is a maintainer decision, backed by memory and CPU evidence, on whether HighLowContainer should remain or be changed.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
performance
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.