perf: Create IR slice from expr slice pushdown#27200
perf: Create IR slice from expr slice pushdown#27200nameexhaustion wants to merge 4 commits intomainfrom
Conversation
|
The uncompressed lib size after this PR is 58.6537 MB. |
0e6174f to
6750893
Compare
|
The uncompressed lib size after this PR is 58.6615 MB. |
|
The uncompressed lib size after this PR is 58.6620 MB. |
|
The uncompressed lib size after this PR is 58.6692 MB. |
5aff96b to
3b48dfd
Compare
|
The uncompressed lib size after this PR is 58.6603 MB. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## nxs/expr-projection-height-2 #27200 +/- ##
================================================================
+ Coverage 81.88% 81.91% +0.03%
================================================================
Files 1823 1824 +1
Lines 251386 251618 +232
Branches 3149 3149
================================================================
+ Hits 205842 206109 +267
+ Misses 44736 44701 -35
Partials 808 808 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
The uncompressed lib size after this PR is 58.6682 MB. |
|
The uncompressed lib size after this PR is 58.4668 MB. |
bd6199e to
88a8ee6
Compare
|
The uncompressed lib size after this PR is 58.6704 MB. |
|
The uncompressed lib size after this PR is 58.6730 MB. |
|
The uncompressed lib size after this PR is 58.6718 MB. |
|
The uncompressed lib size after this PR is 58.6717 MB. |
|
The uncompressed lib size after this PR is 58.6603 MB. |
|
The uncompressed lib size after this PR is 58.6753 MB. |
2 similar comments
|
The uncompressed lib size after this PR is 58.6753 MB. |
|
The uncompressed lib size after this PR is 58.6753 MB. |
|
The uncompressed lib size after this PR is 58.6746 MB. |
72cee3c to
a14cb00
Compare
|
The uncompressed lib size after this PR is 58.6767 MB. |
36d7d67 to
45467a9
Compare
|
The uncompressed lib size after this PR is 58.8740 MB. |
45467a9 to
5d7232c
Compare
|
The uncompressed lib size after this PR is 58.8732 MB. |
5d7232c to
cee7313
Compare
|
The uncompressed lib size after this PR is 58.8688 MB. |
2d26193 to
c492bc0
Compare
cee7313 to
24d289f
Compare
|
The uncompressed lib size after this PR is 58.6718 MB. |
c492bc0 to
352bd25
Compare
24d289f to
ecf3a44
Compare
|
The uncompressed lib size after this PR is 61.4957 MB. |
352bd25 to
7de45c2
Compare
ecf3a44 to
ed4c2de
Compare
|
The uncompressed lib size after this PR is 60.9760 MB. |
fb915c3 to
31125ce
Compare
028a364 to
56074cb
Compare
31125ce to
9917f1d
Compare
9917f1d to
1ef6b6a
Compare
|
The uncompressed lib size after this PR is 60.6818 MB. |
select(all().head/tail(N)/first/last)#26592Create IR-level slices as the common slice of all expr slices that apply to columns. This can then be pushed down by the optimizer to perform the slice at lower levels.
In implementation, we add a new expr slice pushdown implementation via recursive tree traversal instead of going through
OptimizationRule::optimize_expr, and this is called when doing IR slice pushdown on the exprs of each IR.E.g.
lf.select(pl.all().first())can currently be much slower thanlf.head(1), but after this PR it will optimize to the same aslf.head(1).Detected exprs:
head()/tail()/first()/last()/slice().E.g. - The following now creates a slice at the scan:
E.g. - We are able to size the IR::Slice to the exact common boundary, then apply an offset correction to the expr slices -
As well as for negative slices-
--