Execute spatial predicates with RowFn - #9350
Conversation
Merging this PR will not alter performance
|
a7a83b0 to
8ca9fc7
Compare
8ca9fc7 to
970bec2
Compare
970bec2 to
5e69f45
Compare
5e69f45 to
a7f8ee0
Compare
|
Here are the local spatial-predicate benchmark results from the final Rust 1.97.1 run. The comparison used a Each target used two warm runs and seven alternating measured pairs. Each process used 100 samples with a 0.25–0.5 second measurement window on CPU 4. Negative changes are faster. The change is the median paired ratio, not the ratio of the two displayed medians. Most predicate cases remain within 8%. Two constant-left Contains and intersects: 15 cases
Envelope controls: 7 cases
Bounding-box controls: 8 cases
|
a7f8ee0 to
8afa323
Compare
8afa323 to
808b070
Compare
808b070 to
545ab01
Compare
545ab01 to
1997eff
Compare
1997eff to
f095e4a
Compare
f095e4a to
65d8de6
Compare
65d8de6 to
319b6af
Compare
319b6af to
27eca54
Compare
27eca54 to
f90009a
Compare
12d920a to
7ce135f
Compare
7ce135f to
fe255bf
Compare
fe255bf to
2155a49
Compare
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
2155a49 to
c0f5e8e
Compare
Rationale for this change
Moves
containsandintersectsto prepared row execution. This lets each batch reuse work derived from constant geometries.What changes are included in this PR?
containscaches constant bounding boxes and creates a prepared geometry only when a relate path needs it.intersectshoists constant bounding boxes for conservative rejection. Tests cover operand order, constants, nulls, NaN coordinates, bounding boxes, and exact predicate agreement.Rust 1.97.1 one-CGU fat-LTO results are mixed: most predicate cases remain within 8%, two constant-left
containscases regress by 16%, and sparse-null cases improve by 14–20%. The unchanged bounding-box controls remain near parity.What APIs are changed? Are there any user-facing changes?
There are no public API changes. The predicates keep their existing OGC behavior and lazy scalar-function interfaces.