Skip to content

feat: write nested struct layouts - #4942

Merged
a10y merged 21 commits into
developfrom
aduffy/nest1
Oct 28, 2025
Merged

feat: write nested struct layouts#4942
a10y merged 21 commits into
developfrom
aduffy/nest1

Conversation

@a10y

@a10ya10y commented Oct 14, 2025

Copy link
Copy Markdown
Contributor

Part of #4889

To better support writing nested data, here we update our builtin StructLayout in a backwards-compatible fashion.

  • StructStrategy will shred struct fields into their own StructLayout recurseively
  • StructLayout can support nullable structs now. It does this by writing a new child layout containing the validity buffer for nullable arrays

I use the RealNest dataset to evaluate, which contains a copy of ~200k github pull request webhook events. Nested struct layout reduces file size over the previous strategy by about ~10%, and also makes pushdown into the nested columns possible.

Some open questions

  • The validity child requires some extra handling. It seems like the validity handling is very dependent on the expression being pushed down. For example if I'm doing a simple project of a child field, then adding the validity to the result is a simple masking operation. If I'm pushing down an UNNEST or something else that increases the result size, it is hard to map the validity buffer onto the projection_eval result
  • I collect all validity chunks into a single buffer at write time. The idea being that it's better to access the struct validity as a single unit since it is much smaller than the data size. Assuming an 8MB target segment size, this lets us comfortably fit ~64mm rows into a single segment. Another alternative is to bring back roaring, or enable some other boolean compressors.

Comment on lines +288 to +291
vortex_array::compute::mask(
projection.as_ref(),
&Mask::from_buffer(!validity.to_bool().boolean_buffer()),
)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is only safe when we know that the projection has the same length as the struct itself. If we're projecting an UNNEST(a) that will not hold. We don't have UNNEST but i suspect we'll want to add it so we can pushdown into list elements

@a10y
a10y requested a review from robert3005October 14, 2025 15:00
@a10ya10y added the changelog/feature A new feature label Oct 14, 2025

@robert3005robert3005 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this makes sense. Some of the code comments are not correct though

chunks.push(chunk);
}

let collected = ChunkedArray::try_new(chunks, _dtype)?.to_array();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we canonicalize here instead of writing a flat chunked array?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In practice that ends up happening b/c the child here is the CompressStrategy, so it will canonicalize + compress internally.

In general I tried to mirror this on the RepartitionStrategy which yields ChunkedArray as well. I think the LayoutStrategies are a bit weird tbh and there are a few unexpected things like this.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought repartition strategy will have a chunked strategy as a child so it will flatten the chunked array, in this case I think we go straight to flat.

Comment threadvortex-layout/src/layouts/struct_/writer.rs Outdated
a10y added a commit that referenced this pull request Oct 16, 2025
GithubArchive is an archival dataset of Github event logs, hosted at
https://www.gharchive.org/.
It's also distributed as part of RealNest from CWI.
This is our first benchmark to test nested data access with Vortex.
I want to get this in before we merge #4942 or any other follow on work
for nested data support.
TODOs:
- [x] Add more data files. Currently queries finish way too fast
- [x] Add a few more queries
---------
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: FineWeb S3

Summary

  • Overall: 1.020x ➖
  • Vortex: 1.039x ➖
  • duckdb:vortex: 0.987x ➖
  • datafusion:vortex: 1.094x ➖
  • Best: fineweb_q00/datafusion:vortex-file-compressed (0.790x)
  • Worst: fineweb_q02/datafusion:vortex-compact (1.518x)
  • Significant (>30%): 0↑ 9↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
fineweb_q00/datafusion:parquet58495305.9231e+060.987578ns
fineweb_q00/datafusion:parquet58495306.16464e+060.948885ns
fineweb_q01/datafusion:parquet3098824553.09527e+081.00115ns
fineweb_q01/datafusion:parquet3098824553.20878e+080.965734ns
fineweb_q02/datafusion:parquet3044481903.02935e+081.005ns
fineweb_q02/datafusion:parquet3044481903.10408e+080.980799ns
fineweb_q03/datafusion:parquet2956835153.05646e+080.967405ns
fineweb_q03/datafusion:parquet2956835153.01212e+080.981646ns
fineweb_q04/datafusion:parquet3291833233.27152e+081.00621ns
fineweb_q04/datafusion:parquet3291833233.44847e+080.954578ns
fineweb_q05/datafusion:parquet3201723493.12463e+081.02467ns
fineweb_q05/datafusion:parquet3201723493.32365e+080.963315ns
fineweb_q06/datafusion:parquet3083700583.01829e+081.02167ns
fineweb_q06/datafusion:parquet3083700583.23812e+080.952312ns
fineweb_q07/datafusion:parquet2991497863.00368e+080.995945ns
fineweb_q07/datafusion:parquet2991497863.1597e+080.946766ns
fineweb_q08/datafusion:parquet2990949822.9599e+081.01049ns
fineweb_q08/datafusion:parquet2990949823.08913e+080.968216ns
fineweb_q00/datafusion:vortex-file-compressed36302403.65042e+060.994471ns
fineweb_q00/datafusion:vortex-file-compressed36302404.59665e+060.789758ns
fineweb_q01/datafusion:vortex-file-compressed258151572.65619e+070.971888ns
fineweb_q01/datafusion:vortex-file-compressed258151572.57153e+071.00389ns
fineweb_q02/datafusion:vortex-file-compressed220003832.69639e+070.81592ns
fineweb_q02/datafusion:vortex-file-compressed220003832.67587e+070.822178ns
fineweb_q03/datafusion:vortex-file-compressed884288487.59454e+071.16437ns
fineweb_q03/datafusion:vortex-file-compressed884288489.167e+070.964644ns
fineweb_q04/datafusion:vortex-file-compressed2060022062.12127e+080.971127ns
fineweb_q04/datafusion:vortex-file-compressed2060022062.11025e+080.9762ns
fineweb_q05/datafusion:vortex-file-compressed1877634221.89032e+080.993288ns
fineweb_q05/datafusion:vortex-file-compressed1877634221.85189e+081.0139ns
fineweb_q06/datafusion:vortex-file-compressed644009246.59356e+070.976725ns
fineweb_q06/datafusion:vortex-file-compressed644009246.57365e+070.979682ns
fineweb_q07/datafusion:vortex-file-compressed648448146.87143e+070.943687ns
fineweb_q07/datafusion:vortex-file-compressed648448146.76663e+070.958303ns
fineweb_q08/datafusion:vortex-file-compressed257716332.62786e+070.980708ns
fineweb_q08/datafusion:vortex-file-compressed257716332.7111e+070.950596ns
fineweb_q00/datafusion:vortex-compact39117604.59831e+060.850696ns
fineweb_q00/datafusion:vortex-compact39117604.61326e+060.847938ns
fineweb_q01/datafusion:vortex-compact1741163681.39416e+081.2489ns
fineweb_q01/datafusion:vortex-compact1741163681.2479e+081.39527ns🚨
fineweb_q02/datafusion:vortex-compact1601407951.05491e+081.51805ns🚨
fineweb_q02/datafusion:vortex-compact1601407951.09967e+081.45626ns🚨
fineweb_q03/datafusion:vortex-compact13823173649.67785e+081.42833ns🚨
fineweb_q03/datafusion:vortex-compact13823173649.64336e+081.43344ns🚨
fineweb_q04/datafusion:vortex-compact16331940681.11388e+091.46621ns🚨
fineweb_q04/datafusion:vortex-compact16331940681.09391e+091.49298ns🚨
fineweb_q05/datafusion:vortex-compact12443770679.21696e+081.3501ns🚨
fineweb_q05/datafusion:vortex-compact12443770679.16969e+081.35705ns🚨
fineweb_q06/datafusion:vortex-compact6303870425.2338e+081.20445ns
fineweb_q06/datafusion:vortex-compact6303870424.90609e+081.28491ns
fineweb_q07/datafusion:vortex-compact6647269605.18273e+081.28258ns
fineweb_q07/datafusion:vortex-compact6647269605.14246e+081.29262ns
fineweb_q08/datafusion:vortex-compact218322322.04177e+071.06928ns
fineweb_q08/datafusion:vortex-compact218322322.39467e+070.911701ns
fineweb_q00/duckdb:parquet291951682.73622e+071.06699ns
fineweb_q00/duckdb:parquet291951683.04507e+070.958769ns
fineweb_q01/duckdb:parquet950278399.47541e+071.00289ns
fineweb_q01/duckdb:parquet950278399.8999e+070.959887ns
fineweb_q02/duckdb:parquet1015692131.01057e+081.00507ns
fineweb_q02/duckdb:parquet1015692131.05957e+080.958585ns
fineweb_q03/duckdb:parquet3052544683.04638e+081.00202ns
fineweb_q03/duckdb:parquet3052544683.11753e+080.979156ns
fineweb_q04/duckdb:parquet4282657434.29666e+080.996742ns
fineweb_q04/duckdb:parquet4282657434.35444e+080.983515ns
fineweb_q05/duckdb:parquet4030980974.01786e+081.00327ns
fineweb_q05/duckdb:parquet4030980974.10478e+080.982022ns
fineweb_q06/duckdb:parquet2005337801.9974e+081.00398ns
fineweb_q06/duckdb:parquet2005337802.09789e+080.955882ns
fineweb_q07/duckdb:parquet2136662432.13199e+081.00219ns
fineweb_q07/duckdb:parquet2136662432.19694e+080.972564ns
fineweb_q08/duckdb:parquet594402096.20049e+070.958637ns
fineweb_q08/duckdb:parquet594402096.62005e+070.897881ns
fineweb_q00/duckdb:vortex-file-compressed49821694.58425e+061.0868ns
fineweb_q00/duckdb:vortex-file-compressed49821694.91286e+061.01411ns
fineweb_q01/duckdb:vortex-file-compressed252884832.71192e+070.932495ns
fineweb_q01/duckdb:vortex-file-compressed252884832.60869e+070.969395ns
fineweb_q02/duckdb:vortex-file-compressed312391182.93826e+071.06318ns
fineweb_q02/duckdb:vortex-file-compressed312391183.02683e+071.03207ns
fineweb_q03/duckdb:vortex-file-compressed1173356791.15025e+081.02009ns
fineweb_q03/duckdb:vortex-file-compressed1173356791.06518e+081.10156ns
fineweb_q04/duckdb:vortex-file-compressed1895378521.92134e+080.986486ns
fineweb_q04/duckdb:vortex-file-compressed1895378521.94951e+080.972236ns
fineweb_q05/duckdb:vortex-file-compressed1771002941.78785e+080.990578ns
fineweb_q05/duckdb:vortex-file-compressed1771002941.77763e+080.996272ns
fineweb_q06/duckdb:vortex-file-compressed548705596.3189e+070.868356ns
fineweb_q06/duckdb:vortex-file-compressed548705595.62627e+070.975257ns
fineweb_q07/duckdb:vortex-file-compressed590534756.01289e+070.982115ns
fineweb_q07/duckdb:vortex-file-compressed590534756.12705e+070.963816ns
fineweb_q08/duckdb:vortex-file-compressed80183429.043e+060.88669ns
fineweb_q08/duckdb:vortex-file-compressed80183428.84628e+060.906409ns
fineweb_q00/duckdb:vortex-compact59737445.82711e+061.02516ns
fineweb_q00/duckdb:vortex-compact59737445.99473e+060.9965ns
fineweb_q01/duckdb:vortex-compact1010842129.97098e+071.01378ns
fineweb_q01/duckdb:vortex-compact1010842129.30759e+071.08604ns
fineweb_q02/duckdb:vortex-compact1011778241.00506e+081.00668ns
fineweb_q02/duckdb:vortex-compact1011778241.03725e+080.975439ns
fineweb_q03/duckdb:vortex-compact8418437828.50468e+080.98986ns
fineweb_q03/duckdb:vortex-compact8418437828.43795e+080.997688ns
fineweb_q04/duckdb:vortex-compact8968289228.93003e+081.00428ns
fineweb_q04/duckdb:vortex-compact8968289229.07964e+080.987736ns
fineweb_q05/duckdb:vortex-compact7978083758.00506e+080.996631ns
fineweb_q05/duckdb:vortex-compact7978083758.10225e+080.984676ns
fineweb_q06/duckdb:vortex-compact4432974474.47383e+080.990868ns
fineweb_q06/duckdb:vortex-compact4432974474.55087e+080.974093ns
fineweb_q07/duckdb:vortex-compact4589260934.61399e+080.994641ns
fineweb_q07/duckdb:vortex-compact4589260934.58018e+081.00198ns
fineweb_q08/duckdb:vortex-compact74862498.99054e+060.832681ns
fineweb_q08/duckdb:vortex-compact74862497.61464e+060.983138ns

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: FineWeb NVMe

Summary

  • Overall: 1.048x ➖
  • Vortex: 1.065x ➖
  • duckdb:vortex: 1.001x ➖
  • datafusion:vortex: 1.133x ❌
  • Best: fineweb_q08/datafusion:vortex-compact (0.800x)
  • Worst: fineweb_q04/datafusion:vortex-compact (1.554x)
  • Significant (>10%): 5↑ 17↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
fineweb_q00/datafusion:parquet66052485.9231e+061.11517ns
fineweb_q00/datafusion:parquet66052486.16464e+061.07147ns
fineweb_q01/datafusion:parquet3246245633.09527e+081.04878ns
fineweb_q01/datafusion:parquet3246245633.20878e+081.01168ns
fineweb_q02/datafusion:parquet3114547203.02935e+081.02813ns
fineweb_q02/datafusion:parquet3114547203.10408e+081.00337ns
fineweb_q03/datafusion:parquet3042319373.05646e+080.995374ns
fineweb_q03/datafusion:parquet3042319373.01212e+081.01003ns
fineweb_q04/datafusion:parquet3489218483.27152e+081.06654ns
fineweb_q04/datafusion:parquet3489218483.44847e+081.01182ns
fineweb_q05/datafusion:parquet3263438063.12463e+081.04442ns
fineweb_q05/datafusion:parquet3263438063.32365e+080.981883ns
fineweb_q06/datafusion:parquet3135885843.01829e+081.03896ns
fineweb_q06/datafusion:parquet3135885843.23812e+080.968428ns
fineweb_q07/datafusion:parquet3095994093.00368e+081.03073ns
fineweb_q07/datafusion:parquet3095994093.1597e+080.979838ns
fineweb_q08/datafusion:parquet3077930222.9599e+081.03988ns
fineweb_q08/datafusion:parquet3077930223.08913e+080.996373ns
fineweb_q00/datafusion:vortex-file-compressed37682003.65042e+061.03226ns
fineweb_q00/datafusion:vortex-file-compressed37682004.59665e+060.819771ns
fineweb_q01/datafusion:vortex-file-compressed248674662.65619e+070.936209ns
fineweb_q01/datafusion:vortex-file-compressed248674662.57153e+070.967032ns
fineweb_q02/datafusion:vortex-file-compressed282583822.69639e+071.04801ns
fineweb_q02/datafusion:vortex-file-compressed282583822.67587e+071.05605ns
fineweb_q03/datafusion:vortex-file-compressed911129207.59454e+071.19972ns
fineweb_q03/datafusion:vortex-file-compressed911129209.167e+070.993923ns
fineweb_q04/datafusion:vortex-file-compressed2117388892.12127e+080.998171ns
fineweb_q04/datafusion:vortex-file-compressed2117388892.11025e+081.00338ns
fineweb_q05/datafusion:vortex-file-compressed1934881881.89032e+081.02357ns
fineweb_q05/datafusion:vortex-file-compressed1934881881.85189e+081.04482ns
fineweb_q06/datafusion:vortex-file-compressed693764776.59356e+071.05219ns
fineweb_q06/datafusion:vortex-file-compressed693764776.57365e+071.05537ns
fineweb_q07/datafusion:vortex-file-compressed673747476.87143e+070.980505ns
fineweb_q07/datafusion:vortex-file-compressed673747476.76663e+070.995691ns
fineweb_q08/datafusion:vortex-file-compressed268033752.62786e+071.01997ns
fineweb_q08/datafusion:vortex-file-compressed268033752.7111e+070.988652ns
fineweb_q00/datafusion:vortex-compact45974984.59831e+060.999824ns
fineweb_q00/datafusion:vortex-compact45974984.61326e+060.996583ns
fineweb_q01/datafusion:vortex-compact1703592651.39416e+081.22195ns
fineweb_q01/datafusion:vortex-compact1703592651.2479e+081.36517ns🚨
fineweb_q02/datafusion:vortex-compact1638437921.05491e+081.55315ns🚨
fineweb_q02/datafusion:vortex-compact1638437921.09967e+081.48993ns🚨
fineweb_q03/datafusion:vortex-compact14045716679.67785e+081.45133ns🚨
fineweb_q03/datafusion:vortex-compact14045716679.64336e+081.45652ns🚨
fineweb_q04/datafusion:vortex-compact17002967611.11388e+091.52646ns🚨
fineweb_q04/datafusion:vortex-compact17002967611.09391e+091.55433ns🚨
fineweb_q05/datafusion:vortex-compact12558576689.21696e+081.36255ns🚨
fineweb_q05/datafusion:vortex-compact12558576689.16969e+081.36957ns🚨
fineweb_q06/datafusion:vortex-compact6452770175.2338e+081.2329ns
fineweb_q06/datafusion:vortex-compact6452770174.90609e+081.31526ns🚨
fineweb_q07/datafusion:vortex-compact6767881815.18273e+081.30585ns🚨
fineweb_q07/datafusion:vortex-compact6767881815.14246e+081.31608ns🚨
fineweb_q08/datafusion:vortex-compact191592972.04177e+070.938366ns
fineweb_q08/datafusion:vortex-compact191592972.39467e+070.80008ns
fineweb_q00/duckdb:parquet297399352.73622e+071.0869ns
fineweb_q00/duckdb:parquet297399353.04507e+070.976659ns
fineweb_q01/duckdb:parquet988193989.47541e+071.0429ns
fineweb_q01/duckdb:parquet988193989.8999e+070.998186ns
fineweb_q02/duckdb:parquet1027858171.01057e+081.01711ns
fineweb_q02/duckdb:parquet1027858171.05957e+080.970067ns
fineweb_q03/duckdb:parquet3118703783.04638e+081.02374ns
fineweb_q03/duckdb:parquet3118703783.11753e+081.00038ns
fineweb_q04/duckdb:parquet4371166174.29666e+081.01734ns
fineweb_q04/duckdb:parquet4371166174.35444e+081.00384ns
fineweb_q05/duckdb:parquet4080334634.01786e+081.01555ns
fineweb_q05/duckdb:parquet4080334634.10478e+080.994045ns
fineweb_q06/duckdb:parquet2063994181.9974e+081.03334ns
fineweb_q06/duckdb:parquet2063994182.09789e+080.983842ns
fineweb_q07/duckdb:parquet2184686132.13199e+081.02471ns
fineweb_q07/duckdb:parquet2184686132.19694e+080.994424ns
fineweb_q08/duckdb:parquet624831026.20049e+071.00771ns
fineweb_q08/duckdb:parquet624831026.62005e+070.943846ns
fineweb_q00/duckdb:vortex-file-compressed48652404.58425e+061.06129ns
fineweb_q00/duckdb:vortex-file-compressed48652404.91286e+060.990308ns
fineweb_q01/duckdb:vortex-file-compressed240528742.71192e+070.886933ns
fineweb_q01/duckdb:vortex-file-compressed240528742.60869e+070.92203ns
fineweb_q02/duckdb:vortex-file-compressed287591882.93826e+070.978782ns
fineweb_q02/duckdb:vortex-file-compressed287591883.02683e+070.950141ns
fineweb_q03/duckdb:vortex-file-compressed1117697371.15025e+080.971703ns
fineweb_q03/duckdb:vortex-file-compressed1117697371.06518e+081.04931ns
fineweb_q04/duckdb:vortex-file-compressed1999029361.92134e+081.04043ns
fineweb_q04/duckdb:vortex-file-compressed1999029361.94951e+081.0254ns
fineweb_q05/duckdb:vortex-file-compressed1850672341.78785e+081.03514ns
fineweb_q05/duckdb:vortex-file-compressed1850672341.77763e+081.04109ns
fineweb_q06/duckdb:vortex-file-compressed556781266.3189e+070.881136ns
fineweb_q06/duckdb:vortex-file-compressed556781265.62627e+070.989611ns
fineweb_q07/duckdb:vortex-file-compressed604557566.01289e+071.00544ns
fineweb_q07/duckdb:vortex-file-compressed604557566.12705e+070.986702ns
fineweb_q08/duckdb:vortex-file-compressed85529479.043e+060.945808ns
fineweb_q08/duckdb:vortex-file-compressed85529478.84628e+060.966841ns
fineweb_q00/duckdb:vortex-compact57386325.82711e+060.984817ns
fineweb_q00/duckdb:vortex-compact57386325.99473e+060.95728ns
fineweb_q01/duckdb:vortex-compact892266729.97098e+070.894864ns
fineweb_q01/duckdb:vortex-compact892266729.30759e+070.958644ns
fineweb_q02/duckdb:vortex-compact1001399501.00506e+080.996358ns
fineweb_q02/duckdb:vortex-compact1001399501.03725e+080.965433ns
fineweb_q03/duckdb:vortex-compact8616218128.50468e+081.01312ns
fineweb_q03/duckdb:vortex-compact8616218128.43795e+081.02113ns
fineweb_q04/duckdb:vortex-compact9055518228.93003e+081.01405ns
fineweb_q04/duckdb:vortex-compact9055518229.07964e+080.997343ns
fineweb_q05/duckdb:vortex-compact8013672978.00506e+081.00108ns
fineweb_q05/duckdb:vortex-compact8013672978.10225e+080.989068ns
fineweb_q06/duckdb:vortex-compact4599403494.47383e+081.02807ns
fineweb_q06/duckdb:vortex-compact4599403494.55087e+081.01066ns
fineweb_q07/duckdb:vortex-compact4707839224.61399e+081.02034ns
fineweb_q07/duckdb:vortex-compact4707839224.58018e+081.02787ns
fineweb_q08/duckdb:vortex-compact104012758.99054e+061.15691ns
fineweb_q08/duckdb:vortex-compact104012757.61464e+061.36596ns🚨

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=1 on S3

Summary

  • Overall: 0.948x ➖
  • Vortex: 0.947x ➖
  • duckdb:vortex: 0.966x ➖
  • datafusion:vortex: 0.929x ➖
  • Best: tpch_q05/datafusion:vortex-file-compressed (0.608x)
  • Worst: tpch_q01/datafusion:vortex-compact (1.169x)
  • Significant (>30%): 2↑ 0↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
tpch_q01/datafusion:parquet2701259742.80435e+080.963239ns
tpch_q02/datafusion:parquet3689246703.99638e+080.923147ns
tpch_q03/datafusion:parquet3038421053.03242e+081.00198ns
tpch_q04/datafusion:parquet1399485241.45387e+080.962594ns
tpch_q05/datafusion:parquet3806828484.93353e+080.771623ns
tpch_q06/datafusion:parquet1412512841.3332e+081.05949ns
tpch_q07/datafusion:parquet4015471704.82709e+080.831861ns
tpch_q08/datafusion:parquet4730104104.78494e+080.988539ns
tpch_q09/datafusion:parquet4392438024.45672e+080.985575ns
tpch_q10/datafusion:parquet4525568264.70425e+080.962016ns
tpch_q11/datafusion:parquet2968401192.94689e+081.0073ns
tpch_q12/datafusion:parquet2131465462.4059e+080.885934ns
tpch_q13/datafusion:parquet4280433574.36198e+080.981305ns
tpch_q14/datafusion:parquet1579921081.66396e+080.949496ns
tpch_q15/datafusion:parquet2874848202.88299e+080.997177ns
tpch_q16/datafusion:parquet1939852642.09423e+080.926283ns
tpch_q17/datafusion:parquet3502456933.70351e+080.945712ns
tpch_q18/datafusion:parquet4437624534.52839e+080.979957ns
tpch_q19/datafusion:parquet3262481913.0354e+081.07481ns
tpch_q20/datafusion:parquet2777926272.74237e+081.01297ns
tpch_q21/datafusion:parquet4216288124.44302e+080.948969ns
tpch_q22/datafusion:parquet1691420861.83119e+080.923674ns
tpch_q01/datafusion:vortex-file-compressed2563976652.32196e+081.10423ns
tpch_q02/datafusion:vortex-file-compressed2062617182.52913e+080.815544ns
tpch_q03/datafusion:vortex-file-compressed2932067273.63625e+080.806344ns
tpch_q04/datafusion:vortex-file-compressed1888790551.91839e+080.984571ns
tpch_q05/datafusion:vortex-file-compressed2651053334.35969e+080.608082ns🚀
tpch_q06/datafusion:vortex-file-compressed1960971082.90851e+080.674218ns🚀
tpch_q07/datafusion:vortex-file-compressed2787374152.58551e+081.07807ns
tpch_q08/datafusion:vortex-file-compressed4837414584.83398e+081.00071ns
tpch_q09/datafusion:vortex-file-compressed4289162304.75673e+080.901704ns
tpch_q10/datafusion:vortex-file-compressed3117981103.92344e+080.794706ns
tpch_q11/datafusion:vortex-file-compressed1254676811.18619e+081.05774ns
tpch_q12/datafusion:vortex-file-compressed2587834112.81586e+080.91902ns
tpch_q13/datafusion:vortex-file-compressed2102345352.18334e+080.962904ns
tpch_q14/datafusion:vortex-file-compressed1727721331.65717e+081.04257ns
tpch_q15/datafusion:vortex-file-compressed2418343052.42042e+080.999141ns
tpch_q16/datafusion:vortex-file-compressed1285605421.28734e+080.998652ns
tpch_q17/datafusion:vortex-file-compressed3788906823.69926e+081.02423ns
tpch_q18/datafusion:vortex-file-compressed2972183443.18562e+080.933ns
tpch_q19/datafusion:vortex-file-compressed3203826963.29849e+080.971301ns
tpch_q20/datafusion:vortex-file-compressed2270290182.40388e+080.944429ns
tpch_q21/datafusion:vortex-file-compressed3270620114.61855e+080.708149ns
tpch_q22/datafusion:vortex-file-compressed1464321191.40353e+081.04331ns
tpch_q01/datafusion:vortex-compact3021942602.5853e+081.1689ns
tpch_q02/datafusion:vortex-compact1810621731.95649e+080.925446ns
tpch_q03/datafusion:vortex-compact2713736672.69365e+081.00746ns
tpch_q04/datafusion:vortex-compact1894188622.14352e+080.88368ns
tpch_q05/datafusion:vortex-compact2613551212.55177e+081.02421ns
tpch_q06/datafusion:vortex-compact2817648993.131e+080.899919ns
tpch_q07/datafusion:vortex-compact2305349332.48226e+080.928728ns
tpch_q08/datafusion:vortex-compact3306468084.20816e+080.785728ns
tpch_q09/datafusion:vortex-compact3830464603.72036e+081.0296ns
tpch_q10/datafusion:vortex-compact3295583923.33314e+080.988731ns
tpch_q11/datafusion:vortex-compact989022661.00575e+080.983364ns
tpch_q12/datafusion:vortex-compact3069394823.24336e+080.946364ns
tpch_q13/datafusion:vortex-compact1416881311.57925e+080.897183ns
tpch_q14/datafusion:vortex-compact1704128291.7716e+080.961914ns
tpch_q15/datafusion:vortex-compact2812206292.90022e+080.969654ns
tpch_q16/datafusion:vortex-compact1241595311.33964e+080.92681ns
tpch_q17/datafusion:vortex-compact3253497253.78313e+080.860001ns
tpch_q18/datafusion:vortex-compact2424026462.58669e+080.937117ns
tpch_q19/datafusion:vortex-compact3854272603.61356e+081.06661ns
tpch_q20/datafusion:vortex-compact2364481762.46603e+080.958821ns
tpch_q21/datafusion:vortex-compact3427744334.82184e+080.710879ns
tpch_q22/datafusion:vortex-compact1033684041.06704e+080.968736ns
tpch_q01/duckdb:parquet5050499786.06934e+080.832133ns
tpch_q02/duckdb:parquet10904527871.21839e+090.894993ns
tpch_q03/duckdb:parquet8549123189.68633e+080.882597ns
tpch_q04/duckdb:parquet5332579525.92527e+080.899972ns
tpch_q05/duckdb:parquet13006725081.24804e+091.04217ns
tpch_q06/duckdb:parquet3662438083.7697e+080.971547ns
tpch_q07/duckdb:parquet10624202231.05437e+091.00763ns
tpch_q08/duckdb:parquet12580081581.43683e+090.875545ns
tpch_q09/duckdb:parquet11628489931.23113e+090.944538ns
tpch_q10/duckdb:parquet11162430741.21573e+090.918168ns
tpch_q11/duckdb:parquet7257888527.66393e+080.947019ns
tpch_q12/duckdb:parquet5345384404.94787e+081.08034ns
tpch_q13/duckdb:parquet8121168398.17937e+080.992885ns
tpch_q14/duckdb:parquet5180704095.51425e+080.939512ns
tpch_q15/duckdb:parquet5687404776.42377e+080.885368ns
tpch_q16/duckdb:parquet5006350464.89645e+081.02244ns
tpch_q17/duckdb:parquet6377933446.968e+080.915318ns
tpch_q18/duckdb:parquet7204017778.02536e+080.897657ns
tpch_q19/duckdb:parquet6812774716.90702e+080.986355ns
tpch_q20/duckdb:parquet8604727279.06055e+080.949691ns
tpch_q21/duckdb:parquet9366885461.07979e+090.867472ns
tpch_q22/duckdb:parquet4418819684.21357e+081.04871ns
tpch_q01/duckdb:vortex-file-compressed2968816383.03982e+080.976641ns
tpch_q02/duckdb:vortex-file-compressed7108941057.23294e+080.982856ns
tpch_q03/duckdb:vortex-file-compressed6091463526.32046e+080.963768ns
tpch_q04/duckdb:vortex-file-compressed3824014493.7776e+081.01229ns
tpch_q05/duckdb:vortex-file-compressed7065869787.18719e+080.983119ns
tpch_q06/duckdb:vortex-file-compressed4049467694.06319e+080.996624ns
tpch_q07/duckdb:vortex-file-compressed7053058056.84867e+081.02984ns
tpch_q08/duckdb:vortex-file-compressed9784435419.75834e+081.00267ns
tpch_q09/duckdb:vortex-file-compressed8739356047.93966e+081.10072ns
tpch_q10/duckdb:vortex-file-compressed7597090697.6133e+080.997871ns
tpch_q11/duckdb:vortex-file-compressed4394361133.93338e+081.1172ns
tpch_q12/duckdb:vortex-file-compressed5265854965.08075e+081.03643ns
tpch_q13/duckdb:vortex-file-compressed4372426874.26453e+081.0253ns
tpch_q14/duckdb:vortex-file-compressed3802942164.63372e+080.82071ns
tpch_q15/duckdb:vortex-file-compressed2827014613.49324e+080.809282ns
tpch_q16/duckdb:vortex-file-compressed2858465533.3345e+080.857239ns
tpch_q17/duckdb:vortex-file-compressed5632377806.42455e+080.876697ns
tpch_q18/duckdb:vortex-file-compressed6592925276.91636e+080.953236ns
tpch_q19/duckdb:vortex-file-compressed4244862724.83524e+080.877901ns
tpch_q20/duckdb:vortex-file-compressed6352301308.99383e+080.706295ns
tpch_q21/duckdb:vortex-file-compressed9592835009.24508e+081.03761ns
tpch_q22/duckdb:vortex-file-compressed2358557132.35355e+081.00213ns
tpch_q01/duckdb:vortex-compact3075804483.02766e+081.0159ns
tpch_q02/duckdb:vortex-compact7164839287.00804e+081.02237ns
tpch_q03/duckdb:vortex-compact5483143206.51251e+080.84194ns
tpch_q04/duckdb:vortex-compact3552237443.26937e+081.08652ns
tpch_q05/duckdb:vortex-compact6587419036.12174e+081.07607ns
tpch_q06/duckdb:vortex-compact4069807494.24625e+080.958448ns
tpch_q07/duckdb:vortex-compact7232938806.43283e+081.12438ns
tpch_q08/duckdb:vortex-compact8663828409.07407e+080.95479ns
tpch_q09/duckdb:vortex-compact7794880528.29099e+080.940162ns
tpch_q10/duckdb:vortex-compact6444733156.77084e+080.951836ns
tpch_q11/duckdb:vortex-compact3645911493.58422e+081.01721ns
tpch_q12/duckdb:vortex-compact4724756124.81989e+080.980263ns
tpch_q13/duckdb:vortex-compact3887690133.97096e+080.97903ns
tpch_q14/duckdb:vortex-compact3797329983.99816e+080.949769ns
tpch_q15/duckdb:vortex-compact2497045582.82963e+080.882464ns
tpch_q16/duckdb:vortex-compact2821074923.14081e+080.898201ns
tpch_q17/duckdb:vortex-compact4990197665.36362e+080.930378ns
tpch_q18/duckdb:vortex-compact5297680345.59025e+080.947664ns
tpch_q19/duckdb:vortex-compact4401448484.56538e+080.964092ns
tpch_q20/duckdb:vortex-compact6575835516.39678e+081.02799ns
tpch_q21/duckdb:vortex-compact8278040968.4921e+080.974793ns
tpch_q22/duckdb:vortex-compact2298071822.34437e+080.980251ns

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=10 on NVME

Summary

  • Overall: 1.009x ➖
  • Vortex: 1.003x ➖
  • duckdb:vortex: 0.998x ➖
  • datafusion:vortex: 1.009x ➖
  • Best: tpch_q06/datafusion:vortex-file-compressed (0.957x)
  • Worst: tpch_q12/datafusion:vortex-file-compressed (1.042x)
  • Significant (>10%): 0↑ 0↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
tpch_q01/datafusion:arrow4840539384.84666e+080.998738ns
tpch_q02/datafusion:arrow929741579.32104e+070.997466ns
tpch_q03/datafusion:arrow1901173681.85969e+081.02231ns
tpch_q04/datafusion:arrow986493319.08764e+071.08553ns
tpch_q05/datafusion:arrow3576396873.41371e+081.04766ns
tpch_q06/datafusion:arrow660685895.88141e+071.12335ns
tpch_q07/datafusion:arrow6691129146.52751e+081.02507ns
tpch_q08/datafusion:arrow2881201582.84391e+081.01311ns
tpch_q09/datafusion:arrow5807619885.67531e+081.02331ns
tpch_q10/datafusion:arrow2348742332.38987e+080.982792ns
tpch_q11/datafusion:arrow3943286893.84865e+081.02459ns
tpch_q12/datafusion:arrow1797678571.78934e+081.00466ns
tpch_q13/datafusion:arrow1912588741.95783e+080.976891ns
tpch_q14/datafusion:arrow550376705.33293e+071.03203ns
tpch_q15/datafusion:arrow994767979.9471e+071.00006ns
tpch_q16/datafusion:arrow753290027.61076e+070.98977ns
tpch_q17/datafusion:arrow5931970135.86471e+081.01147ns
tpch_q18/datafusion:arrow14249891721.3482e+091.05695ns
tpch_q19/datafusion:arrow1390487571.11394e+081.24826ns
tpch_q20/datafusion:arrow1671108631.68171e+080.993698ns
tpch_q21/datafusion:arrow9125402768.87372e+081.02836ns
tpch_q22/datafusion:arrow527449355.3104e+070.993238ns
tpch_q01/datafusion:parquet7007124246.89264e+081.01661ns
tpch_q02/datafusion:parquet2094807732.09681e+080.999045ns
tpch_q03/datafusion:parquet2963136782.93313e+081.01023ns
tpch_q04/datafusion:parquet2151189312.08705e+081.03073ns
tpch_q05/datafusion:parquet4637987174.62778e+081.00221ns
tpch_q06/datafusion:parquet1152804121.18574e+080.972227ns
tpch_q07/datafusion:parquet6799515926.7553e+081.00655ns
tpch_q08/datafusion:parquet5213947805.226e+080.997693ns
tpch_q09/datafusion:parquet8420705808.08475e+081.04155ns
tpch_q10/datafusion:parquet5213127325.04823e+081.03266ns
tpch_q11/datafusion:parquet1358140921.33718e+081.01567ns
tpch_q12/datafusion:parquet2118784532.03923e+081.03901ns
tpch_q13/datafusion:parquet4245094714.26377e+080.99562ns
tpch_q14/datafusion:parquet1580843031.53179e+081.03202ns
tpch_q15/datafusion:parquet2452051182.45054e+081.00062ns
tpch_q16/datafusion:parquet1468218971.45326e+081.01029ns
tpch_q17/datafusion:parquet7084447097.10852e+080.996613ns
tpch_q18/datafusion:parquet11372486681.12499e+091.0109ns
tpch_q19/datafusion:parquet3017352042.82361e+081.06862ns
tpch_q20/datafusion:parquet3063674803.05112e+081.00411ns
tpch_q21/datafusion:parquet8707804688.65505e+081.0061ns
tpch_q22/datafusion:parquet3318376573.28879e+081.009ns
tpch_q01/datafusion:vortex-file-compressed4896036744.87458e+081.0044ns
tpch_q02/datafusion:vortex-file-compressed1597376891.63499e+080.976993ns
tpch_q03/datafusion:vortex-file-compressed2201239422.20431e+080.998608ns
tpch_q04/datafusion:vortex-file-compressed1022906701.0081e+081.01469ns
tpch_q05/datafusion:vortex-file-compressed5810862035.69454e+081.02043ns
tpch_q06/datafusion:vortex-file-compressed358206913.74137e+070.957423ns
tpch_q07/datafusion:vortex-file-compressed5851386025.76774e+081.0145ns
tpch_q08/datafusion:vortex-file-compressed6454545356.36032e+081.01481ns
tpch_q09/datafusion:vortex-file-compressed9887518229.74346e+081.01479ns
tpch_q10/datafusion:vortex-file-compressed2617045082.5364e+081.03179ns
tpch_q11/datafusion:vortex-file-compressed1348844331.29486e+081.04169ns
tpch_q12/datafusion:vortex-file-compressed1017348279.76204e+071.04215ns
tpch_q13/datafusion:vortex-file-compressed2196742402.20476e+080.996363ns
tpch_q14/datafusion:vortex-file-compressed547636555.3992e+071.01429ns
tpch_q15/datafusion:vortex-file-compressed927014129.45297e+070.980659ns
tpch_q16/datafusion:vortex-file-compressed872685448.47424e+071.02981ns
tpch_q17/datafusion:vortex-file-compressed9103679699.03796e+081.00727ns
tpch_q18/datafusion:vortex-file-compressed11067617161.09878e+091.00727ns
tpch_q19/datafusion:vortex-file-compressed661322746.56276e+071.00769ns
tpch_q20/datafusion:vortex-file-compressed1771039361.76184e+081.00522ns
tpch_q21/datafusion:vortex-file-compressed7528123467.56789e+080.994746ns
tpch_q22/datafusion:vortex-file-compressed684352566.85724e+070.998001ns
tpch_q01/datafusion:vortex-compact5292291415.36937e+080.985645ns
tpch_q02/datafusion:vortex-compact1654608821.65331e+081.00079ns
tpch_q03/datafusion:vortex-compact2328565502.32027e+081.00358ns
tpch_q04/datafusion:vortex-compact1196780771.15952e+081.03214ns
tpch_q05/datafusion:vortex-compact5802502035.81603e+080.997675ns
tpch_q06/datafusion:vortex-compact739275807.31008e+071.01131ns
tpch_q07/datafusion:vortex-compact6093078646.05289e+081.00664ns
tpch_q08/datafusion:vortex-compact6411237826.44616e+080.994582ns
tpch_q09/datafusion:vortex-compact9883032039.80113e+081.00836ns
tpch_q10/datafusion:vortex-compact2921397532.93159e+080.996523ns
tpch_q11/datafusion:vortex-compact1372191841.32894e+081.03255ns
tpch_q12/datafusion:vortex-compact1600170851.57053e+081.01887ns
tpch_q13/datafusion:vortex-compact2661914052.63645e+081.00966ns
tpch_q14/datafusion:vortex-compact842667748.20268e+071.02731ns
tpch_q15/datafusion:vortex-compact1652924261.59945e+081.03343ns
tpch_q16/datafusion:vortex-compact935799849.18689e+071.01863ns
tpch_q17/datafusion:vortex-compact9254287109.2688e+080.998434ns
tpch_q18/datafusion:vortex-compact11118274421.10343e+091.00761ns
tpch_q19/datafusion:vortex-compact1213334761.19095e+081.0188ns
tpch_q20/datafusion:vortex-compact2072665352.04327e+081.01439ns
tpch_q21/datafusion:vortex-compact7612211117.53056e+081.01084ns
tpch_q22/datafusion:vortex-compact770578237.6699e+071.00468ns
tpch_q01/duckdb:parquet2622622252.64839e+080.990271ns
tpch_q02/duckdb:parquet1296282411.15551e+081.12183ns
tpch_q03/duckdb:parquet2256554822.24532e+081.005ns
tpch_q04/duckdb:parquet1522518171.52895e+080.995794ns
tpch_q05/duckdb:parquet2348485482.34728e+081.00051ns
tpch_q06/duckdb:parquet713618477.10421e+071.0045ns
tpch_q07/duckdb:parquet2182824092.17827e+081.00209ns
tpch_q08/duckdb:parquet3310625233.29109e+081.00593ns
tpch_q09/duckdb:parquet4887562464.90443e+080.996562ns
tpch_q10/duckdb:parquet6401086166.34762e+081.00842ns
tpch_q11/duckdb:parquet587667585.59088e+071.05112ns
tpch_q12/duckdb:parquet1427331681.40829e+081.01352ns
tpch_q13/duckdb:parquet4108184064.11852e+080.997489ns
tpch_q14/duckdb:parquet1798494621.80992e+080.993689ns
tpch_q15/duckdb:parquet1084982271.0823e+081.00248ns
tpch_q16/duckdb:parquet1607509651.60855e+080.99935ns
tpch_q17/duckdb:parquet2078489242.07325e+081.00253ns
tpch_q18/duckdb:parquet3662941653.64275e+081.00554ns
tpch_q19/duckdb:parquet2898343282.92265e+080.991684ns
tpch_q20/duckdb:parquet2562096632.50224e+081.02392ns
tpch_q21/duckdb:parquet5902047645.84874e+081.00911ns
tpch_q22/duckdb:parquet3011990673.03611e+080.992055ns
tpch_q01/duckdb:vortex-file-compressed2010009751.96628e+081.02224ns
tpch_q02/duckdb:vortex-file-compressed582460785.73945e+071.01484ns
tpch_q03/duckdb:vortex-file-compressed1316136781.33838e+080.983384ns
tpch_q04/duckdb:vortex-file-compressed1642686191.67017e+080.983545ns
tpch_q05/duckdb:vortex-file-compressed1325119721.32175e+081.00255ns
tpch_q06/duckdb:vortex-file-compressed528664735.342e+070.989638ns
tpch_q07/duckdb:vortex-file-compressed1453987401.44504e+081.00619ns
tpch_q08/duckdb:vortex-file-compressed2336401062.36512e+080.987859ns
tpch_q09/duckdb:vortex-file-compressed3638574473.63117e+081.00204ns
tpch_q10/duckdb:vortex-file-compressed1451503901.44821e+081.00228ns
tpch_q11/duckdb:vortex-file-compressed392316813.93805e+070.996222ns
tpch_q12/duckdb:vortex-file-compressed1061586731.08948e+080.974401ns
tpch_q13/duckdb:vortex-file-compressed2375133772.36989e+081.00221ns
tpch_q14/duckdb:vortex-file-compressed648537376.56039e+070.988565ns
tpch_q15/duckdb:vortex-file-compressed941897939.54596e+070.986697ns
tpch_q16/duckdb:vortex-file-compressed798002268.24691e+070.967638ns
tpch_q17/duckdb:vortex-file-compressed1260485951.2362e+081.01964ns
tpch_q18/duckdb:vortex-file-compressed2847065012.82313e+081.00848ns
tpch_q19/duckdb:vortex-file-compressed967432719.47484e+071.02105ns
tpch_q20/duckdb:vortex-file-compressed1688915421.67715e+081.00701ns
tpch_q21/duckdb:vortex-file-compressed5897395315.85373e+081.00746ns
tpch_q22/duckdb:vortex-file-compressed737478707.44207e+070.99096ns
tpch_q01/duckdb:vortex-compact2480124182.4795e+081.00025ns
tpch_q02/duckdb:vortex-compact726906517.18127e+071.01223ns
tpch_q03/duckdb:vortex-compact1777889651.78709e+080.99485ns
tpch_q04/duckdb:vortex-compact2082613152.10115e+080.991177ns
tpch_q05/duckdb:vortex-compact1716069311.748e+080.981733ns
tpch_q06/duckdb:vortex-compact1079312651.08754e+080.992438ns
tpch_q07/duckdb:vortex-compact2184944352.19149e+080.997013ns
tpch_q08/duckdb:vortex-compact2576078552.59165e+080.993992ns
tpch_q09/duckdb:vortex-compact4112862084.07748e+081.00868ns
tpch_q10/duckdb:vortex-compact2061336212.07178e+080.994959ns
tpch_q11/duckdb:vortex-compact443078734.46109e+070.993207ns
tpch_q12/duckdb:vortex-compact2905617952.93564e+080.989773ns
tpch_q13/duckdb:vortex-compact2983709492.96869e+081.00506ns
tpch_q14/duckdb:vortex-compact1043924791.05259e+080.991767ns
tpch_q15/duckdb:vortex-compact1322075631.30207e+081.01536ns
tpch_q16/duckdb:vortex-compact908572069.16168e+070.991709ns
tpch_q17/duckdb:vortex-compact1400075951.39852e+081.00111ns
tpch_q18/duckdb:vortex-compact3350927113.33301e+081.00538ns
tpch_q19/duckdb:vortex-compact1529439831.53902e+080.993776ns
tpch_q20/duckdb:vortex-compact2204841172.22119e+080.99264ns
tpch_q21/duckdb:vortex-compact6769676416.84159e+080.989489ns
tpch_q22/duckdb:vortex-compact821711478.23662e+070.997632ns
tpch_q01/duckdb:duckdb1179472111.17608e+081.00289ns
tpch_q02/duckdb:duckdb524591945.11189e+071.02622ns
tpch_q03/duckdb:duckdb1037685971.01707e+081.02027ns
tpch_q04/duckdb:duckdb1316287801.2975e+081.01448ns
tpch_q05/duckdb:duckdb1161361881.15663e+081.00409ns
tpch_q06/duckdb:duckdb454296444.62004e+070.983317ns
tpch_q07/duckdb:duckdb1112906691.10503e+081.00713ns
tpch_q08/duckdb:duckdb1411660761.40445e+081.00513ns
tpch_q09/duckdb:duckdb3086689843.06118e+081.00833ns
tpch_q10/duckdb:duckdb2149714962.14649e+081.0015ns
tpch_q11/duckdb:duckdb231863122.2929e+071.01122ns
tpch_q12/duckdb:duckdb878877068.68753e+071.01165ns
tpch_q13/duckdb:duckdb2343962792.36265e+080.992091ns
tpch_q14/duckdb:duckdb784814267.88991e+070.994707ns
tpch_q15/duckdb:duckdb820751398.20993e+070.999705ns
tpch_q16/duckdb:duckdb747345167.34811e+071.01706ns
tpch_q17/duckdb:duckdb1002184539.98898e+071.00329ns
tpch_q18/duckdb:duckdb2190822162.18489e+081.00272ns
tpch_q19/duckdb:duckdb1299491431.29289e+081.00511ns
tpch_q20/duckdb:duckdb1248166231.24605e+081.0017ns
tpch_q21/duckdb:duckdb3182647623.16852e+081.00446ns
tpch_q22/duckdb:duckdb738029526.87369e+071.0737ns

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: Statistical and Population Genetics

Summary

  • Overall: 1.003x ➖
  • Vortex: 0.996x ➖
  • duckdb:vortex: 0.996x ➖
  • Best: statpopgen_q01/duckdb:vortex-compact (0.815x)
  • Worst: statpopgen_q00/duckdb:vortex-compact (1.057x)
  • Significant (>10%): 1↑ 0↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
statpopgen_q00/duckdb:parquet1994681951.97782e+081.00853ns
statpopgen_q01/duckdb:parquet3379774203.34866e+081.00929ns
statpopgen_q02/duckdb:parquet6461458786.47674e+080.99764ns
statpopgen_q03/duckdb:parquet10800139251.07521e+091.00447ns
statpopgen_q04/duckdb:parquet10860033641.10122e+090.986186ns
statpopgen_q05/duckdb:parquet7159097807.01677e+081.02028ns
statpopgen_q06/duckdb:parquet13273680031.3231e+091.00322ns
statpopgen_q07/duckdb:parquet8412120308.14246e+081.03312ns
statpopgen_q08/duckdb:parquet8768284238.26578e+081.06079ns
statpopgen_q09/duckdb:parquet9537893269.20081e+081.03664ns
statpopgen_q10/duckdb:parquet21593502812.09529e+091.03057ns
statpopgen_q00/duckdb:vortex-file-compressed128809011.27986e+071.00643ns
statpopgen_q01/duckdb:vortex-file-compressed1066794691.08693e+080.981477ns
statpopgen_q02/duckdb:vortex-file-compressed11953445411.16116e+091.02944ns
statpopgen_q03/duckdb:vortex-file-compressed28214936892.79555e+091.00928ns
statpopgen_q04/duckdb:vortex-file-compressed28218615362.80037e+091.00768ns
statpopgen_q05/duckdb:vortex-file-compressed12786903421.28337e+090.996352ns
statpopgen_q06/duckdb:vortex-file-compressed19598884001.95663e+091.00166ns
statpopgen_q07/duckdb:vortex-file-compressed2837825952.85398e+080.994341ns
statpopgen_q08/duckdb:vortex-file-compressed2957829483.01601e+080.980709ns
statpopgen_q09/duckdb:vortex-file-compressed25433324672.52347e+091.00787ns
statpopgen_q10/duckdb:vortex-file-compressed42421993914.06542e+091.04348ns
statpopgen_q00/duckdb:vortex-compact136370041.29006e+071.05708ns
statpopgen_q01/duckdb:vortex-compact2265082612.7803e+080.81469ns
statpopgen_q02/duckdb:vortex-compact5386973445.44082e+080.990103ns
statpopgen_q03/duckdb:vortex-compact22256282692.24221e+090.992607ns
statpopgen_q04/duckdb:vortex-compact22426607652.2234e+091.00866ns
statpopgen_q05/duckdb:vortex-compact5868841015.83418e+081.00594ns
statpopgen_q06/duckdb:vortex-compact14950155551.48373e+091.0076ns
statpopgen_q07/duckdb:vortex-compact27149749822.78279e+090.975632ns
statpopgen_q08/duckdb:vortex-compact1375754323141.3598e+111.01173ns
statpopgen_q09/duckdb:vortex-compact19877675271.98887e+090.999445ns
statpopgen_q10/duckdb:vortex-compact37996182433.77762e+091.00582ns

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: TPC-H SF=10 on S3

Summary

  • Overall: 0.955x ➖
  • Vortex: 0.955x ➖
  • duckdb:vortex: 0.953x ➖
  • datafusion:vortex: 0.957x ➖
  • Best: tpch_q14/datafusion:vortex-file-compressed (0.749x)
  • Worst: tpch_q22/datafusion:vortex-compact (1.127x)
  • Significant (>30%): 0↑ 0↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
tpch_q01/datafusion:parquet12669763691.11927e+091.13197ns
tpch_q02/datafusion:parquet6390046337.44463e+080.858343ns
tpch_q03/datafusion:parquet9697662368.78325e+081.10411ns
tpch_q04/datafusion:parquet5674638885.31896e+081.06687ns
tpch_q05/datafusion:parquet11281463241.03429e+091.09075ns
tpch_q06/datafusion:parquet5356104905.36993e+080.997426ns
tpch_q07/datafusion:parquet14262925771.32231e+091.07864ns
tpch_q08/datafusion:parquet14250908211.44016e+090.989536ns
tpch_q09/datafusion:parquet17320370691.78288e+090.971483ns
tpch_q10/datafusion:parquet19694649832.00178e+090.983856ns
tpch_q11/datafusion:parquet4338504514.35912e+080.99527ns
tpch_q12/datafusion:parquet6484925516.25018e+081.03756ns
tpch_q13/datafusion:parquet7626883527.46414e+081.0218ns
tpch_q14/datafusion:parquet7582902747.4468e+081.01828ns
tpch_q15/datafusion:parquet12737581111.22547e+091.0394ns
tpch_q16/datafusion:parquet3600106993.50283e+081.02777ns
tpch_q17/datafusion:parquet13708926881.36861e+091.00167ns
tpch_q18/datafusion:parquet18447165851.79385e+091.02835ns
tpch_q19/datafusion:parquet9107042599.4437e+080.964351ns
tpch_q20/datafusion:parquet10111270441.0833e+090.933375ns
tpch_q21/datafusion:parquet18231170621.8637e+090.978226ns
tpch_q22/datafusion:parquet7748460487.67925e+081.00901ns
tpch_q01/datafusion:vortex-file-compressed7771209157.14859e+081.0871ns
tpch_q02/datafusion:vortex-file-compressed6517197977.83423e+080.831888ns
tpch_q03/datafusion:vortex-file-compressed8143645609.22666e+080.882621ns
tpch_q04/datafusion:vortex-file-compressed4955222165.01725e+080.987637ns
tpch_q05/datafusion:vortex-file-compressed11291644691.02764e+091.0988ns
tpch_q06/datafusion:vortex-file-compressed4921352935.07672e+080.969397ns
tpch_q07/datafusion:vortex-file-compressed10106755719.95461e+081.01528ns
tpch_q08/datafusion:vortex-file-compressed13911614801.43433e+090.969903ns
tpch_q09/datafusion:vortex-file-compressed17486817691.77718e+090.983964ns
tpch_q10/datafusion:vortex-file-compressed8926409388.67501e+081.02898ns
tpch_q11/datafusion:vortex-file-compressed4347358024.90594e+080.886141ns
tpch_q12/datafusion:vortex-file-compressed7642475957.86261e+080.972002ns
tpch_q13/datafusion:vortex-file-compressed4149018974.36485e+080.950553ns
tpch_q14/datafusion:vortex-file-compressed4545800026.06517e+080.749493ns
tpch_q15/datafusion:vortex-file-compressed8916000189.45938e+080.942557ns
tpch_q16/datafusion:vortex-file-compressed3385396733.11379e+081.08723ns
tpch_q17/datafusion:vortex-file-compressed14767854041.42123e+091.03909ns
tpch_q18/datafusion:vortex-file-compressed16651381191.50961e+091.10303ns
tpch_q19/datafusion:vortex-file-compressed6187138867.18509e+080.861108ns
tpch_q20/datafusion:vortex-file-compressed7575707039.04983e+080.837111ns
tpch_q21/datafusion:vortex-file-compressed16477144191.77124e+090.930259ns
tpch_q22/datafusion:vortex-file-compressed3228467303.15955e+081.02181ns
tpch_q01/datafusion:vortex-compact8054662777.52149e+081.07089ns
tpch_q02/datafusion:vortex-compact5597714845.73692e+080.975736ns
tpch_q03/datafusion:vortex-compact7052840028.29251e+080.850508ns
tpch_q04/datafusion:vortex-compact4337582565.24753e+080.826595ns
tpch_q05/datafusion:vortex-compact9242847919.51293e+080.971609ns
tpch_q06/datafusion:vortex-compact5641377635.59837e+081.00768ns
tpch_q07/datafusion:vortex-compact9678082759.30301e+081.04032ns
tpch_q08/datafusion:vortex-compact12381282721.32887e+090.931714ns
tpch_q09/datafusion:vortex-compact15384633341.63639e+090.94016ns
tpch_q10/datafusion:vortex-compact7896275997.84059e+081.0071ns
tpch_q11/datafusion:vortex-compact3890344234.41136e+080.881892ns
tpch_q12/datafusion:vortex-compact6560786277.47869e+080.877264ns
tpch_q13/datafusion:vortex-compact4127620084.49529e+080.918209ns
tpch_q14/datafusion:vortex-compact4798820435.38389e+080.891329ns
tpch_q15/datafusion:vortex-compact8230397859.26456e+080.888375ns
tpch_q16/datafusion:vortex-compact2978937382.80226e+081.06305ns
tpch_q17/datafusion:vortex-compact14950712281.4004e+091.0676ns
tpch_q18/datafusion:vortex-compact14236970601.39022e+091.02408ns
tpch_q19/datafusion:vortex-compact6612454457.64409e+080.865041ns
tpch_q20/datafusion:vortex-compact6951138047.89539e+080.880404ns
tpch_q21/datafusion:vortex-compact13637638561.4412e+090.94627ns
tpch_q22/datafusion:vortex-compact3574748463.1729e+081.12665ns
tpch_q01/duckdb:parquet9420797221.07858e+090.873442ns
tpch_q02/duckdb:parquet12994747411.33961e+090.970039ns
tpch_q03/duckdb:parquet13156826971.51364e+090.869219ns
tpch_q04/duckdb:parquet9054673681.0621e+090.852522ns
tpch_q05/duckdb:parquet17065912812.03471e+090.838739ns
tpch_q06/duckdb:parquet6119166376.52253e+080.938158ns
tpch_q07/duckdb:parquet14987634621.67662e+090.893922ns
tpch_q08/duckdb:parquet21462483372.34732e+090.91434ns
tpch_q09/duckdb:parquet19334176982.12484e+090.909912ns
tpch_q10/duckdb:parquet27527969793.00192e+090.917012ns
tpch_q11/duckdb:parquet7340442097.99403e+080.91824ns
tpch_q12/duckdb:parquet8448593011.00267e+090.842613ns
tpch_q13/duckdb:parquet10487785711.11238e+090.942826ns
tpch_q14/duckdb:parquet10620073561.10906e+090.957575ns
tpch_q15/duckdb:parquet9376845039.56624e+080.980201ns
tpch_q16/duckdb:parquet6462431466.12445e+081.05519ns
tpch_q17/duckdb:parquet12416698131.20575e+091.02979ns
tpch_q18/duckdb:parquet11423874621.32532e+090.861972ns
tpch_q19/duckdb:parquet13149108981.4325e+090.917914ns
tpch_q20/duckdb:parquet14095654442.1296e+090.661893ns🚀
tpch_q21/duckdb:parquet16439877041.80428e+090.91116ns
tpch_q22/duckdb:parquet8930851171.0679e+090.836303ns
tpch_q01/duckdb:vortex-file-compressed7562895198.41667e+080.898561ns
tpch_q02/duckdb:vortex-file-compressed11256888671.40307e+090.802304ns
tpch_q03/duckdb:vortex-file-compressed12131993881.26179e+090.961492ns
tpch_q04/duckdb:vortex-file-compressed7711547128.16638e+080.944304ns
tpch_q05/duckdb:vortex-file-compressed12176154011.26901e+090.959503ns
tpch_q06/duckdb:vortex-file-compressed10015291539.43162e+081.06188ns
tpch_q07/duckdb:vortex-file-compressed12616208131.32831e+090.949793ns
tpch_q08/duckdb:vortex-file-compressed16799768431.79991e+090.933369ns
tpch_q09/duckdb:vortex-file-compressed17671137901.93772e+090.911956ns
tpch_q10/duckdb:vortex-file-compressed13010947751.38828e+090.9372ns
tpch_q11/duckdb:vortex-file-compressed8497238888.89364e+080.955428ns
tpch_q12/duckdb:vortex-file-compressed7896285079.4885e+080.832195ns
tpch_q13/duckdb:vortex-file-compressed10582119861.14582e+090.923544ns
tpch_q14/duckdb:vortex-file-compressed8028545638.41174e+080.954446ns
tpch_q15/duckdb:vortex-file-compressed6249392246.87452e+080.909066ns
tpch_q16/duckdb:vortex-file-compressed5584849345.97894e+080.934088ns
tpch_q17/duckdb:vortex-file-compressed11532480071.27105e+090.90732ns
tpch_q18/duckdb:vortex-file-compressed12399582811.24537e+090.995658ns
tpch_q19/duckdb:vortex-file-compressed8650703168.95603e+080.965908ns
tpch_q20/duckdb:vortex-file-compressed12644731141.43645e+090.880279ns
tpch_q21/duckdb:vortex-file-compressed20602728982.12636e+090.968919ns
tpch_q22/duckdb:vortex-file-compressed5042564295.12056e+080.984768ns
tpch_q01/duckdb:vortex-compact8002078627.59686e+081.05334ns
tpch_q02/duckdb:vortex-compact9408116329.2163e+081.02081ns
tpch_q03/duckdb:vortex-compact10395779981.1095e+090.936978ns
tpch_q04/duckdb:vortex-compact5958665666.71958e+080.886762ns
tpch_q05/duckdb:vortex-compact11314539861.1251e+091.00565ns
tpch_q06/duckdb:vortex-compact8016348857.94259e+081.00929ns
tpch_q07/duckdb:vortex-compact11591020321.17691e+090.984867ns
tpch_q08/duckdb:vortex-compact15902053291.76802e+090.899427ns
tpch_q09/duckdb:vortex-compact15284209221.6047e+090.952463ns
tpch_q10/duckdb:vortex-compact12024645031.341e+090.896693ns
tpch_q11/duckdb:vortex-compact6939898797.34594e+080.944725ns
tpch_q12/duckdb:vortex-compact7976488827.86306e+081.01443ns
tpch_q13/duckdb:vortex-compact7752586327.50194e+081.03341ns
tpch_q14/duckdb:vortex-compact8189781558.50962e+080.962415ns
tpch_q15/duckdb:vortex-compact6499837706.49984e+081ns
tpch_q16/duckdb:vortex-compact4867487335.01805e+080.969996ns
tpch_q17/duckdb:vortex-compact10434500841.0827e+090.963751ns
tpch_q18/duckdb:vortex-compact9444323701.06052e+090.890538ns
tpch_q19/duckdb:vortex-compact8382402488.28725e+081.01148ns
tpch_q20/duckdb:vortex-compact11565125161.18845e+090.97313ns
tpch_q21/duckdb:vortex-compact18006446541.75863e+091.02389ns
tpch_q22/duckdb:vortex-compact5471569585.53854e+080.987909ns

@github-actions

github-actionsBot commented Oct 16, 2025

Copy link
Copy Markdown
Contributor

Benchmarks: Clickbench on NVME

Summary

  • Overall: 0.990x ➖
  • Vortex: 0.984x ➖
  • duckdb:vortex: 0.975x ➖
  • datafusion:vortex: 0.994x ➖
  • Best: clickbench_q26/duckdb:vortex-compact (0.749x)
  • Worst: clickbench_q24/duckdb:vortex-file-compressed (1.273x)
  • Significant (>10%): 19↑ 10↓
Detailed Results Table
namePR 570d987base 2c31a75ratio (PR/base)unitremark
clickbench_q00/datafusion:parquet17721791.73117e+061.02369ns
clickbench_q01/datafusion:parquet285953802.58253e+071.10726ns
clickbench_q02/datafusion:parquet626693885.97688e+071.04853ns
clickbench_q03/datafusion:parquet555398385.39703e+071.02908ns
clickbench_q04/datafusion:parquet3731295603.69383e+081.01014ns
clickbench_q05/datafusion:parquet3779221093.74517e+081.00909ns
clickbench_q06/datafusion:parquet18952142.01357e+060.941221ns
clickbench_q07/datafusion:parquet336660793.11009e+071.08248ns
clickbench_q08/datafusion:parquet4496386924.69399e+080.957903ns
clickbench_q09/datafusion:parquet6815707777.10079e+080.959852ns
clickbench_q10/datafusion:parquet1311052121.33884e+080.979242ns
clickbench_q11/datafusion:parquet1568854521.60807e+080.975612ns
clickbench_q12/datafusion:parquet3826660223.87206e+080.988275ns
clickbench_q13/datafusion:parquet5412589565.51321e+080.981749ns
clickbench_q14/datafusion:parquet3758216473.79399e+080.99057ns
clickbench_q15/datafusion:parquet4172809564.28491e+080.973839ns
clickbench_q16/datafusion:parquet7828611437.82266e+081.00076ns
clickbench_q17/datafusion:parquet7707738677.66672e+081.00535ns
clickbench_q18/datafusion:parquet14232635681.48614e+090.957695ns
clickbench_q19/datafusion:parquet402911324.18324e+070.963156ns
clickbench_q20/datafusion:parquet6413276866.35186e+081.00967ns
clickbench_q21/datafusion:parquet7197065457.29259e+080.986901ns
clickbench_q22/datafusion:parquet10807677361.07053e+091.00956ns
clickbench_q23/datafusion:parquet42943351454.28054e+091.00322ns
clickbench_q24/datafusion:parquet1078714511.12518e+080.958702ns
clickbench_q25/datafusion:parquet1567009531.53929e+081.01801ns
clickbench_q26/datafusion:parquet1105144141.08024e+081.02306ns
clickbench_q27/datafusion:parquet10652564541.06581e+090.999485ns
clickbench_q28/datafusion:parquet58667122065.81231e+091.00936ns
clickbench_q29/datafusion:parquet2486658972.3731e+081.04785ns
clickbench_q30/datafusion:parquet3721797073.74243e+080.994485ns
clickbench_q31/datafusion:parquet4178133104.24281e+080.984756ns
clickbench_q32/datafusion:parquet14029295161.35726e+091.03365ns
clickbench_q33/datafusion:parquet16309787341.63413e+090.998075ns
clickbench_q34/datafusion:parquet16100621911.61847e+090.994805ns
clickbench_q35/datafusion:parquet6044152646.06671e+080.996282ns
clickbench_q36/datafusion:parquet1687063741.69972e+080.992557ns
clickbench_q37/datafusion:parquet635940136.30899e+071.00799ns
clickbench_q38/datafusion:parquet960051501.00319e+080.956995ns
clickbench_q39/datafusion:parquet3277510283.14781e+081.0412ns
clickbench_q40/datafusion:parquet379249643.66499e+071.03479ns
clickbench_q41/datafusion:parquet340241503.56709e+070.953835ns
clickbench_q42/datafusion:parquet352115743.59549e+070.979325ns
clickbench_q00/datafusion:vortex-file-compressed18551971.99582e+060.92954ns
clickbench_q01/datafusion:vortex-file-compressed118884751.2134e+070.979763ns
clickbench_q02/datafusion:vortex-file-compressed284377422.9673e+070.958371ns
clickbench_q03/datafusion:vortex-file-compressed310858243.20792e+070.969033ns
clickbench_q04/datafusion:vortex-file-compressed3171907433.17028e+081.00051ns
clickbench_q05/datafusion:vortex-file-compressed3293400963.38865e+080.971891ns
clickbench_q06/datafusion:vortex-file-compressed21555442.0868e+061.03294ns
clickbench_q07/datafusion:vortex-file-compressed163730511.57637e+071.03866ns
clickbench_q08/datafusion:vortex-file-compressed3856264893.85033e+081.00154ns
clickbench_q09/datafusion:vortex-file-compressed5651434575.69847e+080.991746ns
clickbench_q10/datafusion:vortex-file-compressed731451207.18923e+071.01743ns
clickbench_q11/datafusion:vortex-file-compressed833838457.97552e+071.0455ns
clickbench_q12/datafusion:vortex-file-compressed2727788092.71062e+081.00633ns
clickbench_q13/datafusion:vortex-file-compressed4325851684.43876e+080.974564ns
clickbench_q14/datafusion:vortex-file-compressed2554472562.54678e+081.00302ns
clickbench_q15/datafusion:vortex-file-compressed3660226803.76354e+080.97255ns
clickbench_q16/datafusion:vortex-file-compressed7509082767.75663e+080.968086ns
clickbench_q17/datafusion:vortex-file-compressed7481926207.45812e+081.00319ns
clickbench_q18/datafusion:vortex-file-compressed14167610451.44865e+090.977987ns
clickbench_q19/datafusion:vortex-file-compressed197228692.09997e+070.939198ns
clickbench_q20/datafusion:vortex-file-compressed3245603012.78691e+081.16459ns
clickbench_q21/datafusion:vortex-file-compressed3776585963.44796e+081.09531ns
clickbench_q22/datafusion:vortex-file-compressed5562212556.81828e+080.81578ns
clickbench_q23/datafusion:vortex-file-compressed15188807341.97343e+090.769664ns
clickbench_q24/datafusion:vortex-file-compressed643575717.31328e+070.88001ns
clickbench_q25/datafusion:vortex-file-compressed614742216.03204e+071.01913ns
clickbench_q26/datafusion:vortex-file-compressed639859907.25369e+070.882116ns
clickbench_q27/datafusion:vortex-file-compressed8011737707.7959e+081.02769ns
clickbench_q28/datafusion:vortex-file-compressed69477663556.86637e+091.01185ns
clickbench_q29/datafusion:vortex-file-compressed2539749552.46831e+081.02894ns
clickbench_q30/datafusion:vortex-file-compressed2729811942.50256e+081.09081ns
clickbench_q31/datafusion:vortex-file-compressed3147904722.84677e+081.10578ns
clickbench_q32/datafusion:vortex-file-compressed13429493621.34966e+090.995025ns
clickbench_q33/datafusion:vortex-file-compressed14348142851.43468e+091.00009ns
clickbench_q34/datafusion:vortex-file-compressed14306312531.46277e+090.978027ns
clickbench_q35/datafusion:vortex-file-compressed5600873865.45109e+081.02748ns
clickbench_q36/datafusion:vortex-file-compressed844283928.14196e+071.03695ns
clickbench_q37/datafusion:vortex-file-compressed388117253.76825e+071.02997ns
clickbench_q38/datafusion:vortex-file-compressed217297312.12952e+071.02041ns
clickbench_q39/datafusion:vortex-file-compressed1640788001.71225e+080.958267ns
clickbench_q40/datafusion:vortex-file-compressed198758011.98256e+071.00253ns
clickbench_q41/datafusion:vortex-file-compressed179585561.81551e+070.989176ns
clickbench_q42/datafusion:vortex-file-compressed219556032.19535e+071.0001ns
clickbench_q00/datafusion:vortex-compact18996542.01039e+060.94492ns
clickbench_q01/datafusion:vortex-compact115476511.11405e+071.03654ns
clickbench_q02/datafusion:vortex-compact289608392.91614e+070.993122ns
clickbench_q03/datafusion:vortex-compact315702493.13481e+071.00709ns
clickbench_q04/datafusion:vortex-compact3146517423.13591e+081.00338ns
clickbench_q05/datafusion:vortex-compact3245167223.23466e+081.00325ns
clickbench_q06/datafusion:vortex-compact19363142.0417e+060.948383ns
clickbench_q07/datafusion:vortex-compact174230631.52535e+071.14224ns
clickbench_q08/datafusion:vortex-compact3913569963.80492e+081.02855ns
clickbench_q09/datafusion:vortex-compact5621427305.60603e+081.00275ns
clickbench_q10/datafusion:vortex-compact694870207.00299e+070.992248ns
clickbench_q11/datafusion:vortex-compact830185528.14549e+071.0192ns
clickbench_q12/datafusion:vortex-compact2738910212.66399e+081.02812ns
clickbench_q13/datafusion:vortex-compact4289633294.40157e+080.97457ns
clickbench_q14/datafusion:vortex-compact2592911152.4913e+081.04079ns
clickbench_q15/datafusion:vortex-compact3742395623.68565e+081.0154ns
clickbench_q16/datafusion:vortex-compact7480030737.75772e+080.964205ns
clickbench_q17/datafusion:vortex-compact7455566827.52999e+080.990116ns
clickbench_q18/datafusion:vortex-compact14192270741.40639e+091.00913ns
clickbench_q19/datafusion:vortex-compact203503912.13291e+070.954114ns
clickbench_q20/datafusion:vortex-compact3193501812.75249e+081.16022ns
clickbench_q21/datafusion:vortex-compact3776540793.41005e+081.10747ns
clickbench_q22/datafusion:vortex-compact5438326916.66746e+080.815652ns
clickbench_q23/datafusion:vortex-compact14195792231.81153e+090.783637ns
clickbench_q24/datafusion:vortex-compact639844187.46692e+070.856906ns
clickbench_q25/datafusion:vortex-compact610347496.16772e+070.989583ns
clickbench_q26/datafusion:vortex-compact632375387.47797e+070.845651ns
clickbench_q27/datafusion:vortex-compact8115241518.20829e+080.988664ns
clickbench_q28/datafusion:vortex-compact68232141946.68426e+091.02079ns
clickbench_q29/datafusion:vortex-compact2489849722.49436e+080.998192ns
clickbench_q30/datafusion:vortex-compact2736844042.52712e+081.08299ns
clickbench_q31/datafusion:vortex-compact3130425172.85229e+081.09751ns
clickbench_q32/datafusion:vortex-compact12301480561.33973e+090.918208ns
clickbench_q33/datafusion:vortex-compact14229458101.41025e+091.009ns
clickbench_q34/datafusion:vortex-compact14171668401.39168e+091.01831ns
clickbench_q35/datafusion:vortex-compact5571935035.45984e+081.02053ns
clickbench_q36/datafusion:vortex-compact816799177.90304e+071.03353ns
clickbench_q37/datafusion:vortex-compact398491793.7435e+071.06449ns
clickbench_q38/datafusion:vortex-compact217559812.16437e+071.00519ns
clickbench_q39/datafusion:vortex-compact1732274771.69868e+081.01978ns
clickbench_q40/datafusion:vortex-compact197660712.01121e+070.982794ns
clickbench_q41/datafusion:vortex-compact184591831.77138e+071.04208ns
clickbench_q42/datafusion:vortex-compact226193312.1463e+071.05387ns
clickbench_q00/duckdb:parquet1244889741.22902e+081.01291ns
clickbench_q01/duckdb:parquet496627965.11945e+070.970081ns
clickbench_q02/duckdb:parquet632511306.42205e+070.984906ns
clickbench_q03/duckdb:parquet627680706.29538e+070.99705ns
clickbench_q04/duckdb:parquet1995766521.99322e+081.00128ns
clickbench_q05/duckdb:parquet2695462992.70374e+080.996937ns
clickbench_q06/duckdb:parquet607889276.15841e+070.987087ns
clickbench_q07/duckdb:parquet546658715.50553e+070.992927ns
clickbench_q08/duckdb:parquet2653187712.64234e+081.00411ns
clickbench_q09/duckdb:parquet3900668863.87015e+081.00789ns
clickbench_q10/duckdb:parquet955682779.50193e+071.00578ns
clickbench_q11/duckdb:parquet1043030471.05724e+080.986562ns
clickbench_q12/duckdb:parquet2861888422.87307e+080.996109ns
clickbench_q13/duckdb:parquet4739516134.67853e+081.01303ns
clickbench_q14/duckdb:parquet3196555963.21877e+080.9931ns
clickbench_q15/duckdb:parquet2363758242.35687e+081.00292ns
clickbench_q16/duckdb:parquet5660921975.62388e+081.00659ns
clickbench_q17/duckdb:parquet4712617304.72181e+080.998053ns
clickbench_q18/duckdb:parquet9812251459.86643e+080.994509ns
clickbench_q19/duckdb:parquet480109955.15962e+070.930514ns
clickbench_q20/duckdb:parquet4046227084.04506e+081.00029ns
clickbench_q21/duckdb:parquet5269024995.2326e+081.00696ns
clickbench_q22/duckdb:parquet9118964979.05081e+081.00753ns
clickbench_q23/duckdb:parquet2766273702.74784e+081.00671ns
clickbench_q24/duckdb:parquet785400038.04883e+070.975794ns
clickbench_q25/duckdb:parquet1386059821.39107e+080.996402ns
clickbench_q26/duckdb:parquet548879545.37008e+071.02211ns
clickbench_q27/duckdb:parquet6190740226.15945e+081.00508ns
clickbench_q28/duckdb:parquet48628737464.87942e+090.996608ns
clickbench_q29/duckdb:parquet612742726.30064e+070.972509ns
clickbench_q30/duckdb:parquet3066311043.04786e+081.00605ns
clickbench_q31/duckdb:parquet3456380803.46337e+080.997982ns
clickbench_q32/duckdb:parquet10274020271.03352e+090.99408ns
clickbench_q33/duckdb:parquet10524575881.0453e+091.00685ns
clickbench_q34/duckdb:parquet10969574811.09324e+091.0034ns
clickbench_q35/duckdb:parquet3481046603.51537e+080.990236ns
clickbench_q36/duckdb:parquet604941336.03192e+071.0029ns
clickbench_q37/duckdb:parquet494097854.88542e+071.01137ns
clickbench_q38/duckdb:parquet513384495.14257e+070.998303ns
clickbench_q39/duckdb:parquet949322719.28246e+071.02271ns
clickbench_q40/duckdb:parquet551242675.36755e+071.02699ns
clickbench_q41/duckdb:parquet562436105.75168e+070.977863ns
clickbench_q42/duckdb:parquet424361384.17131e+071.01733ns
clickbench_q00/duckdb:vortex-file-compressed125980441.20087e+071.04908ns
clickbench_q01/duckdb:vortex-file-compressed193441051.87451e+071.03196ns
clickbench_q02/duckdb:vortex-file-compressed294112282.95981e+070.993687ns
clickbench_q03/duckdb:vortex-file-compressed343673683.58159e+070.959555ns
clickbench_q04/duckdb:vortex-file-compressed1727392261.72303e+081.00253ns
clickbench_q05/duckdb:vortex-file-compressed1918936751.90209e+081.00886ns
clickbench_q06/duckdb:vortex-file-compressed333238213.22195e+071.03427ns
clickbench_q07/duckdb:vortex-file-compressed216773882.19529e+070.987448ns
clickbench_q08/duckdb:vortex-file-compressed2612409472.62552e+080.995007ns
clickbench_q09/duckdb:vortex-file-compressed3458950953.51838e+080.983109ns
clickbench_q10/duckdb:vortex-file-compressed716142567.40851e+070.966648ns
clickbench_q11/duckdb:vortex-file-compressed848747608.49547e+070.999059ns
clickbench_q12/duckdb:vortex-file-compressed2072861812.03501e+081.0186ns
clickbench_q13/duckdb:vortex-file-compressed4652381534.62458e+081.00601ns
clickbench_q14/duckdb:vortex-file-compressed2956296922.89263e+081.02201ns
clickbench_q15/duckdb:vortex-file-compressed2111362972.10623e+081.00244ns
clickbench_q16/duckdb:vortex-file-compressed9434454619.57631e+080.985187ns
clickbench_q17/duckdb:vortex-file-compressed8466575188.54079e+080.99131ns
clickbench_q18/duckdb:vortex-file-compressed14201541561.47259e+090.964394ns
clickbench_q19/duckdb:vortex-file-compressed260841112.67863e+070.973786ns
clickbench_q20/duckdb:vortex-file-compressed3283064483.82305e+080.858756ns
clickbench_q21/duckdb:vortex-file-compressed3539690173.16373e+081.11884ns
clickbench_q22/duckdb:vortex-file-compressed5674235386.7101e+080.845626ns
clickbench_q23/duckdb:vortex-file-compressed10563768051.37988e+090.765559ns
clickbench_q24/duckdb:vortex-file-compressed669699035.26019e+071.27315ns
clickbench_q25/duckdb:vortex-file-compressed683346296.84404e+070.998454ns
clickbench_q26/duckdb:vortex-file-compressed568875904.86313e+071.16977ns
clickbench_q27/duckdb:vortex-file-compressed4332258694.4466e+080.974286ns
clickbench_q28/duckdb:vortex-file-compressed30279723973.09886e+090.977124ns
clickbench_q29/duckdb:vortex-file-compressed331852963.42586e+070.96867ns
clickbench_q30/duckdb:vortex-file-compressed2058984251.85571e+081.10954ns
clickbench_q31/duckdb:vortex-file-compressed2723431502.46325e+081.10562ns
clickbench_q32/duckdb:vortex-file-compressed10644382661.06704e+090.997558ns
clickbench_q33/duckdb:vortex-file-compressed10226769311.01708e+091.00551ns
clickbench_q34/duckdb:vortex-file-compressed15271646971.48489e+091.02847ns
clickbench_q35/duckdb:vortex-file-compressed3591934393.61658e+080.993186ns
clickbench_q36/duckdb:vortex-file-compressed244403462.50203e+070.976819ns
clickbench_q37/duckdb:vortex-file-compressed162580851.75227e+070.92783ns
clickbench_q38/duckdb:vortex-file-compressed179202161.79277e+070.999581ns
clickbench_q39/duckdb:vortex-file-compressed419297574.36949e+070.959602ns
clickbench_q40/duckdb:vortex-file-compressed169542621.62957e+071.04041ns
clickbench_q41/duckdb:vortex-file-compressed184092581.7364e+071.0602ns
clickbench_q42/duckdb:vortex-file-compressed209545992.09663e+070.999441ns
clickbench_q00/duckdb:vortex-compact108536941.14582e+070.947244ns
clickbench_q01/duckdb:vortex-compact403252214.02512e+071.00184ns
clickbench_q02/duckdb:vortex-compact466609334.68942e+070.995026ns
clickbench_q03/duckdb:vortex-compact446882824.45536e+071.00302ns
clickbench_q04/duckdb:vortex-compact2115022562.11403e+081.00047ns
clickbench_q05/duckdb:vortex-compact2285313002.39239e+080.955244ns
clickbench_q06/duckdb:vortex-compact350844013.5677e+070.98339ns
clickbench_q07/duckdb:vortex-compact547917505.66335e+070.96748ns
clickbench_q08/duckdb:vortex-compact2840800672.8305e+081.00364ns
clickbench_q09/duckdb:vortex-compact4066864134.10735e+080.990142ns
clickbench_q10/duckdb:vortex-compact1226762381.24895e+080.982232ns
clickbench_q11/duckdb:vortex-compact1426774571.43413e+080.994868ns
clickbench_q12/duckdb:vortex-compact2722975723.08782e+080.881844ns
clickbench_q13/duckdb:vortex-compact5346863135.73409e+080.932469ns
clickbench_q14/duckdb:vortex-compact3692977714.02983e+080.916409ns
clickbench_q15/duckdb:vortex-compact2507946842.49538e+081.00504ns
clickbench_q16/duckdb:vortex-compact10307857301.02658e+091.00409ns
clickbench_q17/duckdb:vortex-compact9333214449.29149e+081.00449ns
clickbench_q18/duckdb:vortex-compact15128181571.52892e+090.989467ns
clickbench_q19/duckdb:vortex-compact291410112.90349e+071.00365ns
clickbench_q20/duckdb:vortex-compact4129288005.21435e+080.791908ns
clickbench_q21/duckdb:vortex-compact4695772044.69492e+081.00018ns
clickbench_q22/duckdb:vortex-compact8235144529.64976e+080.853404ns
clickbench_q23/duckdb:vortex-compact13659245891.48832e+090.917764ns
clickbench_q24/duckdb:vortex-compact779597969.32061e+070.836423ns
clickbench_q25/duckdb:vortex-compact1312574101.73717e+080.755583ns
clickbench_q26/duckdb:vortex-compact705738999.42836e+070.748528ns
clickbench_q27/duckdb:vortex-compact6082403987.80857e+080.778939ns
clickbench_q28/duckdb:vortex-compact31220688633.38483e+090.92237ns
clickbench_q29/duckdb:vortex-compact394948474.00604e+070.985884ns
clickbench_q30/duckdb:vortex-compact2899181902.84164e+081.02025ns
clickbench_q31/duckdb:vortex-compact3471819663.32875e+081.04298ns
clickbench_q32/duckdb:vortex-compact10746902191.07927e+090.995753ns
clickbench_q33/duckdb:vortex-compact11206128531.07269e+091.04468ns
clickbench_q34/duckdb:vortex-compact16105797261.60171e+091.00554ns
clickbench_q35/duckdb:vortex-compact3790991153.63408e+081.04318ns
clickbench_q36/duckdb:vortex-compact293034433.33971e+070.877426ns
clickbench_q37/duckdb:vortex-compact230680562.34673e+070.982989ns
clickbench_q38/duckdb:vortex-compact229572962.32864e+070.985868ns
clickbench_q39/duckdb:vortex-compact485792405.1344e+070.946152ns
clickbench_q40/duckdb:vortex-compact254120992.68576e+070.94618ns
clickbench_q41/duckdb:vortex-compact229745302.4252e+070.947326ns
clickbench_q42/duckdb:vortex-compact223246332.25055e+070.991965ns
clickbench_q00/duckdb:duckdb188501491.87278e+071.00653ns
clickbench_q01/duckdb:duckdb372471463.73663e+070.996812ns
clickbench_q02/duckdb:duckdb459649934.62373e+070.99411ns
clickbench_q03/duckdb:duckdb479416044.82521e+070.993566ns
clickbench_q04/duckdb:duckdb1905190061.90205e+081.00165ns
clickbench_q05/duckdb:duckdb2995590762.98916e+081.00215ns
clickbench_q06/duckdb:duckdb358578463.61418e+070.992143ns
clickbench_q07/duckdb:duckdb385233453.85595e+070.999063ns
clickbench_q08/duckdb:duckdb2499604322.51016e+080.995796ns
clickbench_q09/duckdb:duckdb3642057343.62973e+081.0034ns
clickbench_q10/duckdb:duckdb1117302751.12032e+080.997304ns
clickbench_q11/duckdb:duckdb1223110061.22791e+080.996093ns
clickbench_q12/duckdb:duckdb2652598592.67969e+080.989889ns
clickbench_q13/duckdb:duckdb4480051294.52813e+080.989381ns
clickbench_q14/duckdb:duckdb2928396302.92252e+081.00201ns
clickbench_q15/duckdb:duckdb2203590892.19983e+081.00171ns
clickbench_q16/duckdb:duckdb5443237275.44623e+080.99945ns
clickbench_q17/duckdb:duckdb4573080084.60352e+080.993387ns
clickbench_q18/duckdb:duckdb9525671659.5141e+081.00122ns
clickbench_q19/duckdb:duckdb372039003.73463e+070.996187ns
clickbench_q20/duckdb:duckdb4526540184.52517e+081.0003ns
clickbench_q21/duckdb:duckdb4749516824.80246e+080.988976ns
clickbench_q22/duckdb:duckdb5506774515.35412e+081.02851ns
clickbench_q23/duckdb:duckdb2422335912.73348e+080.886174ns
clickbench_q24/duckdb:duckdb494632514.90617e+071.00818ns
clickbench_q25/duckdb:duckdb1124381771.12882e+080.996065ns
clickbench_q26/duckdb:duckdb476522934.6473e+071.02538ns
clickbench_q27/duckdb:duckdb5346053455.31648e+081.00556ns
clickbench_q28/duckdb:duckdb44782354924.51282e+090.992337ns
clickbench_q29/duckdb:duckdb496075274.9627e+070.999608ns
clickbench_q30/duckdb:duckdb2708288722.73708e+080.98948ns
clickbench_q31/duckdb:duckdb3375892333.39757e+080.993619ns
clickbench_q32/duckdb:duckdb10145849491.01997e+090.994721ns
clickbench_q33/duckdb:duckdb10696497731.078e+090.99225ns
clickbench_q34/duckdb:duckdb11436879561.14945e+090.994987ns
clickbench_q35/duckdb:duckdb2656874162.66515e+080.996895ns
clickbench_q36/duckdb:duckdb456163164.06877e+071.12113ns
clickbench_q37/duckdb:duckdb328424413.25093e+071.01025ns
clickbench_q38/duckdb:duckdb340447223.4089e+070.998701ns
clickbench_q39/duckdb:duckdb678292077.2477e+070.935872ns
clickbench_q40/duckdb:duckdb325553913.27811e+070.993114ns
clickbench_q41/duckdb:duckdb332958473.31404e+071.00469ns
clickbench_q42/duckdb:duckdb322570393.23462e+070.997243ns

Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@a10y

a10y commented Oct 28, 2025

Copy link
Copy Markdown
ContributorAuthor

The latest few commits remove the contention in register_splits by pushing down the row range into split registration. So rather than having every partition register_splits for the entire file, it will only register its row range. That sped up query 0 by 83%, but didn't seem to make much of a difference on the others.

It's a bit bittersweet, but the reason the other queries seem to have gotten slower is because...we're compressing better.

We now have 773 leaf StructLayouts, most of which encode string data. Now that those are all being shredded out, we're compressing them with Dict+FSST much more frequently, which makes decoding slower:

imageimage

So I think that the StructLayout is fine, it's actually the way we read back chunks from a DictLayout that may be problematic.

For Query 3 from gharchive: select actor.login, count() as freq from events group by actor.login order by freq desc limit 10, we end up reading with splitsize of 8192 rows. A single dictionary chunk in the actor.login column is nearly 300k codes, and 54,000 values.

imageimage

This means that to read just one single chunk with splits of 8192 rows, require 36 split tasks. Each split task returns a DictArray wrapping 8192 codes, and the entire 54,000 item FSST-encoded dictionary. Calling to_arrow on each of these DictArray chunks will in turn decode the entire FSST values dictionary.

So in effect, it's not that FSST is too slow, but rather that we're decoding the same FSST array 36 times.

@a10y

a10y commented Oct 28, 2025

Copy link
Copy Markdown
ContributorAuthor

I suppose this is something that Operator work is supposed to help with? Though that really seems more focused on memoizing decodes in a single split task, rather than across split tasks?

@robert3005

Copy link
Copy Markdown
Contributor

If we only get 8192 codes we should only decode those codes. I know duckdb have a decompression cache on the fsst array to avoid any double decompression which is similar to us caching canonicalisations. I would still try first to avoid canonicalising values unconditionally and performing the take first

Signed-off-by: Andrew Duffy <andrew@a10y.dev>
@a10y

a10y commented Oct 28, 2025

Copy link
Copy Markdown
ContributorAuthor

This is about values not codes though. The issue is that every chunk goes through ToArrow, which canonicalizes. The entire values array gets decompressed for each chunk in that case.

As a test, when I switch the DictReader to instead eagerly canonicalize the values, Q3 goes from being 40% slower to nearly 2x faster than baseline.

I'm going to revert that commit for now, but I think this is a problem that is independent of nested struct splitting and is something we'll have to handle more fundamentally with DictLayouts.

This reverts commit 570d987.
Signed-off-by: Andrew Duffy <andrew@a10y.dev>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/featureA new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a10y@robert3005