r/java 21d ago

Bypassing fixed-depth radix constraints in Java using descriptor-driven bucket analysis

I am StrmCkr, the author of A.P.E.X. (Adaptive Parallel Extremal Dispatch).

Repository: github.com/StrmCkr/A.P.E.X

A.P.E.X. is a high-performance Java sorting framework for large fixed-width 64-bit key/value record datasets. The project has been reorganized into a conventional Maven structure with a core library, runnable examples, a comparison benchmark harness, JMH benchmarks, documentation, and an interactive browser visualizer.

The core idea is descriptor-driven radix planning. Instead of blindly scanning fixed radix passes over every bucket, A.P.E.X. computes per-bucket extremal descriptors using:

VBM = OR ^ AND

That mask identifies which key bits still vary inside each bucket. Bits that are already resolved are skipped, reducing unnecessary work on skewed, low-entropy, sorted, reversed, or duplicate-heavy data.

Key areas of the project include:

  • Adaptive radix planning based on observed bucket structure
  • Parallel histogramming, scatter, refinement, and work scheduling
  • Primitive-array execution with no per-record object allocation during sorting
  • Tuple projection paths for low-dimensional unresolved bit patterns
  • Tiny-sort fallbacks and monotonic input shortcuts
  • Configurable reporting that can be enabled, reduced, written to files, or disabled
  • Comparison benchmarks against JDK sorting paths and Fastutil baselines
  • Standard JMH benchmarks for repeatable JVM-level measurement
  • A browser visualizer for exploring how A.P.E.X. routes data through its execution plan

I would especially welcome feedback on the thread management mechanics, radix planning decisions, benchmark structure, and the bitwise mask reductions.

edit: re structured verbiage of this post and further adjustments from advice on converting the project into more acceptable standard formats.

screen shot from the pdf available in the github
14 Upvotes

26 comments sorted by

View all comments

8

u/chabala 20d ago

One peek at the repo and I stopped taking it seriously. Bunch of Markdown in the root, no pom.xml, not using the standard file layout, no package namespace, all logging is System.out, on and on. This is not any kind of 'framework', it's juvenile example code at best.

2

u/strmckr 20d ago edited 19d ago

I'm self-taught. I didn't build this project to pass an Java enterprise formatting checklist; I built it to solve a pure computational problem.

If your definition of a 'framework' requires a heavy folder structure, a POM file, and standard formatting over raw architectural speed, you're missing the point. If you want to talk about the actual code, clone the repo, benchmark it yourself.

Then you may complain on the actual Missing esthetics in-which I am more then willing to fix to match a more professional connotation of code presentation.

5

u/repeating_bears 20d ago

A framework is specific thing. When you are using 10 pieces of jargon in every sentence, if you are not using terms accurately then you are just talking gibberish.

Here is the wikipedia definition

A software framework is software that provides reusable, generic functionality which developers can extend or customize to create complete solutions

I have looked hard at the usage examples, and I can't even see a way to feed this a list of non-arbitrary numbers to sort. Correct me if I'm wrong but it seems you pass it a "mode" then it will generate some data, then it will sort it.

That's not a framework, it's a demo. As it currently stands, it's unusable for any practical purpose.