Skip to content

perf(bench): JavaVsJniWriteBenchmark at cascade depth 0-3 (#477); README: Vorticity - #481

Merged
dfa1 merged 2 commits into
mainfrom
perf/477-write-benchmark
Oct 9, 2026
Merged

dfa1 merged 2 commits into
mainfrom
perf/477-write-benchmark

Conversation

@dfa1

@dfa1 dfa1 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Two commits:

  1. JavaVsJniWriteBenchmark: javaWrite duplicates javaWriteCascading; jniWrite includes Arrow conversion #477 — javaWrite takes cascade depth 0–3 as a @Param (own state, so jniWrite runs once) and prints size per depth; duplicate javaWriteCascading removed. jniWrite keeps the Arrow conversion in the loop (vortex-jni accepts only Arrow and documents no faster path), now stated in the benchmark and docs.
  2. README lists Evariops/Vorticity; encodings line refreshed (Union read since Support DType::Union and the vortex.union array (read side) #442).

5 forks:

ops/s bytes
javaWrite depth 0 2.673 ± 0.075 460,424,918
javaWrite depth 1 0.856 ± 0.027 76,831,090
javaWrite depth 2 0.947 ± 0.028 59,461,778
javaWrite depth 3 (default) 0.951 ± 0.029 59,456,658
jniWrite (incl. Arrow conversion) 0.843 ± 0.006
jniWrite, Arrow built outside loop (reference only) 1.094 ± 0.004

Closes #477

🤖 Generated with Claude Code

https://claude.ai/code/session_015R8cf8YM8XFQqrkyhSAtYr

dfa1 and others added 2 commits October 9, 2026 13:30
- javaWrite takes the cascade depth as a @PARAM (0-3) on its own state,
  so jniWrite still runs once; it prints the file size per depth. The
  duplicate javaWriteCascading and its meaningless size ratio are gone.
- jniWrite keeps converting each batch to Arrow inside the measured loop:
  vortex-jni accepts only Arrow batches and documents no faster path, so
  that cost is what a Java caller pays. The benchmark and docs now say
  so instead of leaving it implicit.

5 forks: vortex-java 0.951 (depth 3) vs vortex-jni 0.843 ops/s (1.13x);
Rust's encoder alone, Arrow built outside the loop, is 1.094 ops/s.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015R8cf8YM8XFQqrkyhSAtYr
Also refresh the encodings line: DType::Union is read since #442, so all
38 encodings are read, 35 written (union, parquet.variant and
zstd_buffers are read-only).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015R8cf8YM8XFQqrkyhSAtYr
@dfa1
dfa1 force-pushed the perf/477-write-benchmark branch from 33c40af to 1324cc7 Compare October 9, 2026 11:30
@dfa1 dfa1 changed the title perf(bench): fair JavaVsJniWriteBenchmark, cascade depth 0-3 (#477) perf(bench): JavaVsJniWriteBenchmark at cascade depth 0-3 (#477); README: Vorticity Oct 9, 2026
@dfa1
dfa1 merged commit ef2b6ef into main Oct 9, 2026
6 checks passed
@dfa1
dfa1 deleted the perf/477-write-benchmark branch October 9, 2026 11:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JavaVsJniWriteBenchmark: javaWrite duplicates javaWriteCascading; jniWrite includes Arrow conversion

1 participant