Skip to content

Add execution target that recursively canonicalises as well as canonical with canonical validity#6380

Merged
robert3005 merged 6 commits intodevelopfrom
rk/recursivecanonical
Feb 10, 2026
Merged

Add execution target that recursively canonicalises as well as canonical with canonical validity#6380
robert3005 merged 6 commits intodevelopfrom
rk/recursivecanonical

Conversation

@robert3005
Copy link
Contributor

Should there be an explicit option to execute validity just by one step?

@robert3005 robert3005 force-pushed the rk/recursivecanonical branch from 98dd2f8 to 9c10680 Compare February 9, 2026 22:10
@codspeed-hq
Copy link

codspeed-hq bot commented Feb 9, 2026

Merging this PR will degrade performance by 99.99%

⚡ 1 improved benchmark
❌ 52 regressed benchmarks
✅ 1082 untouched benchmarks
⏩ 1268 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation take_fsl_random[1024, 100] 6.6 µs 2,002.5 µs -99.67%
Simulation take_fsl_nullable_random[256, 1000] 6.6 µs 4,739.6 µs -99.86%
Simulation take_fsl_nullable_random[64, 100] 6.6 µs 178 µs -96.28%
Simulation take_fsl_nullable_random[1024, 1000] 6.6 µs 22,598.3 µs -99.97%
Simulation take_fsl_nullable_random[1024, 100] 6.6 µs 1,999.7 µs -99.67%
Simulation take_fsl_nullable_random[16, 1000] 6.6 µs 411.7 µs -98.41%
Simulation take_fsl_random[1024, 1000] 6.6 µs 23,032.3 µs -99.97%
Simulation take_fsl_random[16, 100] 6.6 µs 70.6 µs -90.63%
Simulation take_fsl_random[16, 1000] 6.6 µs 377.4 µs -98.26%
Simulation take_fsl_nullable_random[16, 100] 8 µs 96.2 µs -91.71%
Simulation take_fsl_nullable_random[4096, 100] 6.6 µs 8,104.3 µs -99.92%
Simulation take_fsl_nullable_random[256, 100] 6.6 µs 538.1 µs -98.78%
Simulation take_fsl_random[4096, 100] 6.6 µs 8,191.5 µs -99.92%
Simulation take_fsl_nullable_random[4096, 1000] 6.6 µs 90,781.9 µs -99.99%
Simulation take_fsl_random[256, 100] 6.6 µs 530.6 µs -98.75%
Simulation take_fsl_nullable_random[64, 1000] 6.6 µs 1,277.2 µs -99.48%
Simulation take_fsl_random[256, 1000] 6.6 µs 4,933.7 µs -99.87%
Simulation take_fsl_random[4096, 1000] 6.6 µs 92,697.2 µs -99.99%
Simulation take_fsl_random[64, 100] 6.6 µs 162.4 µs -95.95%
Simulation take_fsl_random[64, 1000] 6.6 µs 1,288.3 µs -99.49%
... ... ... ... ... ...

ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.


Comparing rk/recursivecanonical (90b387b) with develop (6135037)

Open in CodSpeed

Footnotes

  1. 1268 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

array
.take(indices.to_array())
.unwrap()
.execute::<RecursiveCanonical>(&mut LEGACY_SESSION.create_execution_ctx())
Copy link
Contributor

Choose a reason for hiding this comment

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

would be better if the ctx was created outside of the bench

Comment on lines 719 to 724
fields
.iter()
.map(|f| {
Ok(f.clone().execute::<RecursiveCanonical>(ctx)?.0.into_array())
})
.collect::<VortexResult<Arc<[_]>>>()?,
Copy link
Contributor

Choose a reason for hiding this comment

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

cna we do this without an alloc?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

sadly no, we could store fields though as Arc<Box<[ArrayRef]>>. Otherwise this only works with unsized locals since after unwrap you get [ArrayRef] and compiler doesn't know what to do with it

Copy link
Contributor

@joseph-isaacs joseph-isaacs left a comment

Choose a reason for hiding this comment

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

Looks good, just one Q

…cal with canonical validity

Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@joseph-isaacs joseph-isaacs added the changelog/feature A new feature label Feb 10, 2026
Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@robert3005 robert3005 force-pushed the rk/recursivecanonical branch from 7689e15 to 9c5f077 Compare February 10, 2026 16:06
Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@robert3005 robert3005 enabled auto-merge (squash) February 10, 2026 23:13
@robert3005 robert3005 merged commit b51b934 into develop Feb 10, 2026
44 of 46 checks passed
@robert3005 robert3005 deleted the rk/recursivecanonical branch February 10, 2026 23:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants