peterstace / simplefeatures

Simple Features is a pure Go Implementation of the OpenGIS Simple Feature Access Specification
MIT License
129 stars 19 forks source link

Use Sequence instead of []XY for DCEL edges #468

Closed peterstace closed 1 year ago

peterstace commented 1 year ago

Description

commit 08c83784f8e7d2a5ae37a7204cc96dc55a755525 Author: Peter Stace peterstace@gmail.com Date: Sun Nov 6 20:36:23 2022 +1100

Use Sequence instead of []XY for DCEL edges

The DCEL algorithm needs to represent the points along an edge. The
sources of these points are `Sequence` values from the input geometries.
The DCEL geometry extraction phase (the last step of the DCEL algorithm)
includes a step that inserts points along the edge into the output
geometry.

Before this change, DCEL edges represent points as a slice of `XY`. This
has the disadvantage of a conversion step from a `Sequence` to `[]XY`
(in the DCEL input stage), and then from `[]XY` back to `Sequence` (in
the DCEL output stage).

This change simplifies things by just using `Sequence` throughout. It
also slightly increases the range of points stored on each DCEL edge to
include the origin of the edge, and the final point on the next edge.
These points are redundant (since the output stage could read them from
the vertex records) but help with debugging. Because the Sequences are
shallow copies rather than deep copies, there is no performance penalty.

Check List

Have you:

Related Issue

Benchmark Results

Click to expand ``` name old time/op new time/op delta pkg:github.com/peterstace/simplefeatures/geom goos:linux goarch:arm64 LineEnvelope/0-2 2.23ns ± 7% 2.31ns ± 7% +3.57% (p=0.014 n=14+15) LineEnvelope/1-2 2.15ns ± 2% 2.13ns ± 2% ~ (p=0.059 n=14+13) LineEnvelope/2-2 2.14ns ± 3% 2.13ns ± 2% ~ (p=0.168 n=15+14) LineEnvelope/3-2 2.13ns ± 3% 2.12ns ± 2% ~ (p=0.659 n=15+14) MarshalWKB/polygon/n=10-2 92.0ns ± 2% 92.3ns ± 1% ~ (p=0.191 n=13+12) MarshalWKB/polygon/n=100-2 237ns ± 5% 237ns ± 5% ~ (p=0.830 n=14+14) MarshalWKB/polygon/n=1000-2 1.54µs ±11% 1.59µs ±11% ~ (p=0.210 n=14+14) MarshalWKB/polygon/n=10000-2 33.6µs ±44% 39.7µs ±43% ~ (p=0.148 n=15+15) UnmarshalWKB/polygon/n=10-2 159ns ± 3% 156ns ± 1% -2.21% (p=0.000 n=14+13) UnmarshalWKB/polygon/n=100-2 300ns ± 4% 295ns ± 6% ~ (p=0.095 n=15+14) UnmarshalWKB/polygon/n=1000-2 1.80µs ±16% 1.77µs ±11% ~ (p=0.621 n=15+14) UnmarshalWKB/polygon/n=10000-2 38.9µs ±47% 41.8µs ±113% ~ (p=0.874 n=14+14) IntersectsLineStringWithLineString/n=10-2 767ns ± 2% 767ns ± 5% ~ (p=0.448 n=14+14) IntersectsLineStringWithLineString/n=100-2 11.9µs ± 4% 11.8µs ± 3% ~ (p=0.471 n=13+13) IntersectsLineStringWithLineString/n=1000-2 141µs ±10% 146µs ±21% ~ (p=0.354 n=14+15) IntersectsLineStringWithLineString/n=10000-2 3.03ms ±49% 3.21ms ±32% ~ (p=0.252 n=14+15) IntersectsMultiPointWithMultiPoint/n=20-2 553ns ± 0% 555ns ± 1% +0.44% (p=0.001 n=13+14) IntersectsMultiPointWithMultiPoint/n=200-2 7.55µs ± 1% 7.53µs ± 1% ~ (p=0.838 n=15+14) IntersectsMultiPointWithMultiPoint/n=2000-2 71.4µs ± 2% 71.3µs ± 1% ~ (p=0.946 n=14+14) IntersectsMultiPointWithMultiPoint/n=20000-2 779µs ± 1% 783µs ± 2% +0.54% (p=0.022 n=13+14) PolygonSingleRingValidation/n=10-2 1.28µs ± 3% 1.27µs ± 1% ~ (p=0.381 n=13+13) PolygonSingleRingValidation/n=100-2 19.2µs ± 2% 19.1µs ± 1% -0.95% (p=0.001 n=14+12) PolygonSingleRingValidation/n=1000-2 283µs ± 2% 283µs ± 1% ~ (p=0.139 n=15+12) PolygonSingleRingValidation/n=10000-2 4.68ms ±23% 4.79ms ±20% ~ (p=0.621 n=14+15) PolygonMultipleRingsValidation/n=4-2 3.65µs ± 1% 3.66µs ± 4% ~ (p=0.659 n=12+13) PolygonMultipleRingsValidation/n=36-2 30.8µs ± 3% 30.7µs ± 4% ~ (p=1.000 n=13+14) PolygonMultipleRingsValidation/n=400-2 407µs ± 3% 407µs ± 4% ~ (p=0.982 n=14+14) PolygonMultipleRingsValidation/n=4096-2 5.18ms ± 1% 5.18ms ± 2% ~ (p=0.720 n=13+14) PolygonZigZagRingsValidation/n=10-2 6.12µs ± 1% 6.13µs ± 3% ~ (p=0.381 n=12+14) PolygonZigZagRingsValidation/n=100-2 74.1µs ± 2% 73.9µs ± 3% ~ (p=0.164 n=14+14) PolygonZigZagRingsValidation/n=1000-2 989µs ± 5% 979µs ± 2% ~ (p=0.981 n=14+13) PolygonZigZagRingsValidation/n=10000-2 16.3ms ±20% 16.2ms ±32% ~ (p=0.838 n=15+15) PolygonAnnulusValidation/n=10-2 1.98µs ± 3% 1.98µs ± 5% ~ (p=0.693 n=13+14) PolygonAnnulusValidation/n=100-2 19.2µs ± 4% 19.3µs ± 3% ~ (p=0.650 n=13+15) PolygonAnnulusValidation/n=1000-2 347µs ± 2% 343µs ± 2% -1.19% (p=0.001 n=14+14) PolygonAnnulusValidation/n=10000-2 4.55ms ± 4% 4.55ms ± 4% ~ (p=0.943 n=13+14) MultipolygonValidation/n=1-2 218ns ± 4% 217ns ± 1% ~ (p=0.092 n=13+14) MultipolygonValidation/n=4-2 486ns ± 2% 486ns ± 2% ~ (p=0.955 n=13+15) MultipolygonValidation/n=16-2 2.16µs ± 4% 2.13µs ± 1% ~ (p=0.091 n=14+13) MultipolygonValidation/n=64-2 10.3µs ± 1% 10.3µs ± 2% ~ (p=0.759 n=13+15) MultipolygonValidation/n=256-2 56.1µs ± 4% 56.1µs ± 4% ~ (p=0.793 n=14+13) MultipolygonValidation/n=1024-2 342µs ± 2% 341µs ± 1% ~ (p=0.899 n=14+12) MultiPolygonTwoCircles/n=10-2 1.94µs ± 3% 1.92µs ± 2% ~ (p=0.070 n=15+13) MultiPolygonTwoCircles/n=100-2 23.1µs ± 4% 22.9µs ± 1% ~ (p=0.103 n=15+12) MultiPolygonTwoCircles/n=1000-2 298µs ± 8% 324µs ±28% ~ (p=0.310 n=14+15) MultiPolygonTwoCircles/n=10000-2 4.88ms ±11% 4.82ms ±13% ~ (p=0.567 n=15+15) MultiPolygonMultipleTouchingPoints/n=1-2 2.62µs ± 3% 2.60µs ± 1% ~ (p=0.188 n=12+14) MultiPolygonMultipleTouchingPoints/n=10-2 20.9µs ± 2% 21.0µs ± 4% ~ (p=0.847 n=13+15) MultiPolygonMultipleTouchingPoints/n=100-2 266µs ± 3% 265µs ± 1% ~ (p=0.479 n=13+13) MultiPolygonMultipleTouchingPoints/n=1000-2 3.32ms ± 4% 3.28ms ± 1% -1.22% (p=0.048 n=13+14) WKTParsing/point-2 1.13µs ± 3% 1.13µs ± 2% ~ (p=0.659 n=13+13) DistancePolygonToPolygonOrdering/n=100_swap=false-2 27.1µs ± 6% 26.8µs ± 6% ~ (p=0.174 n=15+15) DistancePolygonToPolygonOrdering/n=100_swap=true-2 26.6µs ± 8% 26.7µs ± 4% ~ (p=0.252 n=12+14) DistancePolygonToPolygonOrdering/n=1000_swap=false-2 464µs ± 2% 464µs ± 2% ~ (p=0.943 n=14+13) DistancePolygonToPolygonOrdering/n=1000_swap=true-2 464µs ± 2% 463µs ± 1% ~ (p=0.977 n=12+12) IntersectionPolygonWithPolygonOrdering/n=100_swap=false-2 3.25µs ± 2% 3.24µs ± 3% ~ (p=0.343 n=13+13) IntersectionPolygonWithPolygonOrdering/n=100_swap=true-2 3.26µs ± 5% 3.24µs ± 2% ~ (p=0.676 n=14+13) IntersectionPolygonWithPolygonOrdering/n=1000_swap=false-2 35.1µs ± 4% 34.6µs ± 1% -1.46% (p=0.002 n=13+12) IntersectionPolygonWithPolygonOrdering/n=1000_swap=true-2 34.8µs ± 1% 34.9µs ± 4% ~ (p=0.969 n=12+14) MultiLineStringIsSimpleManyLineStrings/n=100-2 26.9µs ± 2% 26.7µs ± 1% -0.55% (p=0.014 n=14+14) MultiLineStringIsSimpleManyLineStrings/n=1000-2 331µs ± 3% 329µs ± 3% ~ (p=0.194 n=14+14) ForceCWandForceCCW/0-2 16.5ns ± 8% 16.5ns ± 5% ~ (p=0.675 n=14+14) ForceCWandForceCCW/0#01-2 103ns ± 3% 101ns ± 1% -1.48% (p=0.010 n=14+13) ForceCWandForceCCW/1-2 16.9ns ± 6% 16.7ns ± 6% ~ (p=0.462 n=14+12) ForceCWandForceCCW/1#01-2 101ns ± 2% 102ns ± 2% ~ (p=0.070 n=12+12) ForceCWandForceCCW/2-2 31.1ns ± 4% 30.7ns ±10% ~ (p=0.164 n=15+15) ForceCWandForceCCW/2#01-2 155ns ± 3% 157ns ± 6% ~ (p=0.167 n=14+14) ForceCWandForceCCW/3-2 30.5ns ± 6% 30.5ns ± 4% ~ (p=0.198 n=12+14) ForceCWandForceCCW/3#01-2 156ns ± 3% 156ns ± 2% ~ (p=0.571 n=10+12) ForceCWandForceCCW/4-2 44.5ns ± 6% 43.9ns ± 5% ~ (p=0.565 n=13+12) ForceCWandForceCCW/4#01-2 241ns ± 3% 239ns ± 1% ~ (p=0.110 n=10+10) ForceCWandForceCCW/5-2 44.7ns ± 5% 44.5ns ± 6% ~ (p=0.667 n=14+12) ForceCWandForceCCW/5#01-2 241ns ± 3% 240ns ± 1% ~ (p=0.936 n=12+10) ForceCWandForceCCW/6-2 65.0ns ± 8% 63.7ns ± 6% ~ (p=0.092 n=14+14) ForceCWandForceCCW/6#01-2 392ns ± 6% 389ns ± 3% ~ (p=0.960 n=13+13) EnvelopeTransformXY-2 141ns ± 3% 142ns ± 4% ~ (p=0.064 n=14+15) WKBParse/0-2 420ns ± 0% 420ns ± 1% ~ (p=0.396 n=13+13) WKBParse/1-2 426ns ± 2% 425ns ± 1% ~ (p=0.480 n=13+14) WKBParse/2-2 480ns ± 0% 491ns ± 1% +2.25% (p=0.000 n=12+14) WKBParse/3-2 484ns ± 5% 483ns ± 1% ~ (p=0.990 n=13+14) WKBParse/4-2 558ns ± 1% 567ns ± 1% +1.55% (p=0.000 n=15+13) WKBParse/5-2 434ns ± 1% 424ns ± 1% -2.31% (p=0.000 n=13+15) WKBParse/6-2 487ns ± 2% 487ns ± 1% ~ (p=0.923 n=14+15) WKBParse/7-2 486ns ± 0% 488ns ± 2% ~ (p=0.368 n=13+15) WKBParse/8-2 577ns ± 1% 577ns ± 0% ~ (p=0.461 n=13+12) WKBParse/9-2 313ns ± 2% 314ns ± 2% ~ (p=0.310 n=13+15) WKBParse/10-2 315ns ± 5% 313ns ± 1% ~ (p=1.000 n=13+14) WKBParse/11-2 313ns ± 1% 313ns ± 1% ~ (p=0.708 n=13+15) WKBParse/12-2 308ns ± 1% 309ns ± 1% +0.33% (p=0.011 n=14+15) WKBParse/13-2 605ns ± 1% 595ns ± 1% -1.64% (p=0.000 n=13+14) WKBParse/14-2 704ns ± 1% 705ns ± 1% ~ (p=0.877 n=13+14) WKBParse/15-2 713ns ± 1% 712ns ± 1% ~ (p=0.381 n=13+14) WKBParse/16-2 836ns ± 1% 837ns ± 1% ~ (p=0.253 n=13+14) WKBParse/17-2 703ns ± 1% 701ns ± 0% ~ (p=0.883 n=14+14) WKBParse/18-2 907ns ± 0% 907ns ± 1% ~ (p=0.883 n=12+13) WKBParse/19-2 908ns ± 1% 909ns ± 1% ~ (p=0.553 n=13+13) WKBParse/20-2 1.09µs ± 0% 1.10µs ± 1% +1.02% (p=0.000 n=12+14) WKBParse/21-2 302ns ± 1% 301ns ± 1% -0.49% (p=0.018 n=14+14) WKBParse/22-2 303ns ± 1% 303ns ± 1% ~ (p=0.305 n=14+15) WKBParse/23-2 304ns ± 1% 302ns ± 0% -0.65% (p=0.000 n=15+14) WKBParse/24-2 300ns ± 2% 298ns ± 1% ~ (p=0.091 n=15+15) WKBParse/25-2 1.56µs ± 2% 1.56µs ± 1% ~ (p=0.955 n=13+15) WKBParse/26-2 1.97µs ± 1% 1.97µs ± 1% ~ (p=0.277 n=13+15) WKBParse/27-2 1.97µs ± 0% 1.98µs ± 1% ~ (p=0.186 n=12+15) WKBParse/28-2 2.47µs ± 1% 2.47µs ± 1% ~ (p=0.518 n=14+14) WKBParse/29-2 302ns ± 0% 301ns ± 1% -0.29% (p=0.023 n=13+14) WKBParse/30-2 304ns ± 2% 304ns ± 2% ~ (p=0.174 n=14+14) WKBParse/31-2 303ns ± 1% 302ns ± 1% ~ (p=0.075 n=14+15) WKBParse/32-2 299ns ± 1% 299ns ± 1% ~ (p=0.246 n=14+15) WKBParse/33-2 569ns ± 1% 571ns ± 1% +0.28% (p=0.049 n=14+13) WKBParse/34-2 660ns ± 0% 649ns ± 1% -1.72% (p=0.000 n=14+15) WKBParse/35-2 659ns ± 0% 659ns ± 1% ~ (p=0.733 n=12+14) WKBParse/36-2 722ns ± 2% 711ns ± 1% -1.47% (p=0.000 n=13+14) WKBParse/37-2 807ns ± 1% 814ns ± 0% +0.83% (p=0.000 n=13+12) WKBParse/38-2 965ns ± 1% 962ns ± 3% ~ (p=0.105 n=13+15) WKBParse/39-2 965ns ± 1% 966ns ± 1% ~ (p=0.910 n=13+13) WKBParse/40-2 1.07µs ± 2% 1.08µs ± 1% +0.86% (p=0.000 n=14+14) WKBParse/41-2 303ns ± 1% 302ns ± 0% -0.38% (p=0.000 n=13+14) WKBParse/42-2 306ns ± 1% 305ns ± 1% ~ (p=0.489 n=14+14) WKBParse/43-2 305ns ± 1% 306ns ± 1% ~ (p=0.802 n=13+14) WKBParse/44-2 300ns ± 1% 302ns ± 1% +0.40% (p=0.009 n=13+15) WKBParse/45-2 888ns ± 1% 889ns ± 3% ~ (p=0.777 n=14+14) WKBParse/46-2 1.09µs ± 1% 1.08µs ± 1% -0.61% (p=0.023 n=15+13) WKBParse/47-2 1.08µs ± 2% 1.08µs ± 2% ~ (p=0.839 n=14+13) WKBParse/48-2 1.23µs ± 2% 1.24µs ± 1% +0.71% (p=0.011 n=14+12) WKBParse/49-2 1.28µs ± 1% 1.27µs ± 2% -0.68% (p=0.002 n=15+13) WKBParse/50-2 1.60µs ± 1% 1.60µs ± 1% ~ (p=0.711 n=14+13) WKBParse/51-2 1.59µs ± 1% 1.61µs ± 3% +1.18% (p=0.000 n=12+13) WKBParse/52-2 1.87µs ± 1% 1.88µs ± 1% +0.83% (p=0.000 n=14+12) WKBParse/53-2 303ns ± 1% 302ns ± 1% -0.56% (p=0.000 n=14+13) WKBParse/54-2 305ns ± 1% 305ns ± 1% ~ (p=0.103 n=14+12) WKBParse/55-2 305ns ± 1% 305ns ± 4% ~ (p=0.181 n=13+13) WKBParse/56-2 300ns ± 1% 299ns ± 1% ~ (p=0.135 n=13+13) WKBParse/57-2 1.93µs ± 1% 1.92µs ± 2% -0.41% (p=0.005 n=12+13) WKBParse/58-2 2.38µs ± 1% 2.37µs ± 1% -0.38% (p=0.047 n=15+13) WKBParse/59-2 2.37µs ± 1% 2.36µs ± 1% -0.62% (p=0.000 n=13+12) WKBParse/60-2 2.86µs ± 1% 2.86µs ± 2% ~ (p=0.990 n=13+14) WKBParse/61-2 302ns ± 1% 303ns ± 1% ~ (p=0.641 n=14+13) WKBParse/62-2 305ns ± 2% 304ns ± 1% ~ (p=0.838 n=15+14) WKBParse/63-2 304ns ± 1% 303ns ± 1% ~ (p=0.334 n=14+14) WKBParse/64-2 298ns ± 1% 299ns ± 1% ~ (p=0.077 n=15+13) WKBParse/65-2 871ns ± 0% 859ns ± 1% -1.41% (p=0.000 n=13+14) WKBParse/66-2 1.03µs ± 1% 1.02µs ± 1% -0.46% (p=0.002 n=14+13) WKBParse/67-2 1.01µs ± 1% 1.02µs ± 1% +0.76% (p=0.000 n=14+13) WKBParse/68-2 1.14µs ± 1% 1.13µs ± 1% -0.37% (p=0.007 n=13+14) pkg:github.com/peterstace/simplefeatures/geos goos:linux goarch:arm64 IntersectionWithoutValidation/n=10-2 13.4µs ± 2% 13.4µs ± 2% ~ (p=0.475 n=14+14) IntersectionWithoutValidation/n=100-2 29.1µs ± 2% 29.0µs ± 1% ~ (p=0.652 n=15+14) IntersectionWithoutValidation/n=1000-2 149µs ± 3% 149µs ± 3% ~ (p=0.801 n=13+13) IntersectionWithoutValidation/n=10000-2 1.38ms ± 5% 1.41ms ± 4% +2.37% (p=0.025 n=14+13) NoOp/n=10-2 2.17µs ± 2% 2.16µs ± 2% ~ (p=0.290 n=14+14) NoOp/n=100-2 5.70µs ± 1% 5.73µs ± 4% ~ (p=0.395 n=14+14) NoOp/n=1000-2 39.8µs ± 2% 40.3µs ± 5% ~ (p=0.367 n=15+15) NoOp/n=10000-2 457µs ± 9% 462µs ± 9% ~ (p=0.430 n=13+14) pkg:github.com/peterstace/simplefeatures/internal/perf goos:linux goarch:arm64 LineStringIsSimpleCircle/n=10-2 1.08µs ± 3% 1.07µs ± 0% ~ (p=0.971 n=15+12) LineStringIsSimpleCircle/n=100-2 17.0µs ± 1% 17.1µs ± 2% ~ (p=0.643 n=14+14) LineStringIsSimpleCircle/n=1000-2 263µs ± 1% 264µs ± 1% ~ (p=0.169 n=13+14) LineStringIsSimpleCircle/n=10000-2 4.17ms ±17% 4.25ms ±19% ~ (p=0.813 n=14+15) LineStringIsSimpleZigZag/10-2 956ns ± 1% 958ns ± 1% ~ (p=0.092 n=13+14) LineStringIsSimpleZigZag/100-2 16.9µs ± 1% 17.0µs ± 1% ~ (p=0.068 n=13+14) LineStringIsSimpleZigZag/1000-2 243µs ± 3% 243µs ± 2% ~ (p=0.928 n=13+15) LineStringIsSimpleZigZag/10000-2 4.10ms ±10% 4.37ms ±21% ~ (p=0.077 n=15+14) SetOperation/n=4/Go_Intersection-2 21.4µs ± 2% 19.9µs ± 1% -6.92% (p=0.000 n=14+12) SetOperation/n=4/Go_Difference-2 21.9µs ± 1% 20.6µs ± 3% -5.82% (p=0.000 n=12+14) SetOperation/n=4/Go_SymmetricDifference-2 27.6µs ± 1% 26.4µs ± 1% -4.66% (p=0.000 n=13+15) SetOperation/n=4/Go_Union-2 22.7µs ± 1% 21.5µs ± 4% -5.38% (p=0.000 n=12+14) SetOperation/n=4/GEOS_Intersection-2 11.7µs ± 2% 11.7µs ± 2% ~ (p=0.563 n=15+13) SetOperation/n=4/GEOS_Difference-2 12.2µs ± 4% 12.2µs ± 4% ~ (p=0.650 n=14+13) SetOperation/n=4/GEOS_SymmetricDifference-2 18.9µs ± 4% 18.8µs ± 2% ~ (p=0.943 n=13+14) SetOperation/n=4/GEOS_Union-2 12.3µs ± 2% 12.3µs ± 1% ~ (p=0.352 n=14+14) SetOperation/n=8/Go_Intersection-2 27.1µs ± 0% 25.7µs ± 1% -5.41% (p=0.000 n=13+13) SetOperation/n=8/Go_Difference-2 27.6µs ± 3% 26.2µs ± 5% -4.96% (p=0.000 n=14+15) SetOperation/n=8/Go_SymmetricDifference-2 34.2µs ± 0% 33.1µs ± 5% -3.25% (p=0.001 n=13+15) SetOperation/n=8/Go_Union-2 28.0µs ± 0% 26.5µs ± 1% -5.36% (p=0.000 n=12+12) SetOperation/n=8/GEOS_Intersection-2 15.5µs ± 3% 15.6µs ± 3% ~ (p=0.381 n=13+15) SetOperation/n=8/GEOS_Difference-2 15.3µs ± 2% 15.3µs ± 3% ~ (p=0.603 n=14+14) SetOperation/n=8/GEOS_SymmetricDifference-2 22.7µs ± 4% 22.5µs ± 1% ~ (p=0.185 n=14+13) SetOperation/n=8/GEOS_Union-2 15.0µs ± 2% 15.0µs ± 4% ~ (p=0.547 n=13+15) SetOperation/n=16/Go_Intersection-2 37.3µs ± 1% 36.1µs ± 5% -3.38% (p=0.000 n=13+14) SetOperation/n=16/Go_Difference-2 39.0µs ± 1% 38.0µs ± 5% -2.46% (p=0.013 n=13+15) SetOperation/n=16/Go_SymmetricDifference-2 51.6µs ±10% 49.4µs ± 3% -4.30% (p=0.000 n=13+15) SetOperation/n=16/Go_Union-2 41.0µs ± 4% 38.8µs ± 1% -5.29% (p=0.000 n=14+12) SetOperation/n=16/GEOS_Intersection-2 17.2µs ± 3% 17.4µs ± 4% ~ (p=0.128 n=13+14) SetOperation/n=16/GEOS_Difference-2 18.4µs ± 1% 18.5µs ± 2% ~ (p=0.440 n=13+15) SetOperation/n=16/GEOS_SymmetricDifference-2 30.3µs ± 3% 30.3µs ± 2% ~ (p=0.477 n=14+15) SetOperation/n=16/GEOS_Union-2 18.9µs ± 1% 19.0µs ± 3% ~ (p=0.199 n=13+13) SetOperation/n=32/Go_Intersection-2 61.7µs ± 2% 59.7µs ± 2% -3.26% (p=0.000 n=14+14) SetOperation/n=32/Go_Difference-2 63.5µs ± 1% 62.1µs ± 3% -2.17% (p=0.000 n=12+14) SetOperation/n=32/Go_SymmetricDifference-2 85.1µs ± 3% 83.9µs ± 3% -1.35% (p=0.019 n=14+14) SetOperation/n=32/Go_Union-2 66.0µs ± 1% 64.6µs ± 4% -2.04% (p=0.002 n=13+14) SetOperation/n=32/GEOS_Intersection-2 22.8µs ± 6% 22.8µs ± 3% ~ (p=0.370 n=14+14) SetOperation/n=32/GEOS_Difference-2 24.1µs ± 5% 24.1µs ± 4% ~ (p=0.874 n=14+14) SetOperation/n=32/GEOS_SymmetricDifference-2 43.0µs ± 2% 42.9µs ± 2% ~ (p=0.376 n=14+14) SetOperation/n=32/GEOS_Union-2 24.3µs ± 3% 24.3µs ± 1% ~ (p=0.650 n=14+13) SetOperation/n=64/Go_Intersection-2 111µs ± 2% 109µs ± 5% -1.64% (p=0.017 n=13+15) SetOperation/n=64/Go_Difference-2 119µs ± 6% 116µs ± 4% -2.22% (p=0.002 n=13+15) SetOperation/n=64/Go_SymmetricDifference-2 164µs ± 2% 163µs ± 3% -0.72% (p=0.033 n=14+15) SetOperation/n=64/Go_Union-2 125µs ± 2% 122µs ± 1% -2.34% (p=0.000 n=12+12) SetOperation/n=64/GEOS_Intersection-2 30.7µs ± 4% 30.8µs ± 2% ~ (p=0.377 n=15+14) SetOperation/n=64/GEOS_Difference-2 36.9µs ± 3% 37.4µs ± 5% ~ (p=0.081 n=15+15) SetOperation/n=64/GEOS_SymmetricDifference-2 78.1µs ± 2% 79.2µs ± 3% +1.32% (p=0.031 n=14+14) SetOperation/n=64/GEOS_Union-2 39.4µs ± 1% 40.2µs ± 6% +1.95% (p=0.038 n=13+14) SetOperation/n=128/Go_Intersection-2 229µs ± 2% 227µs ± 3% ~ (p=0.069 n=14+14) SetOperation/n=128/Go_Difference-2 240µs ± 1% 240µs ± 1% ~ (p=0.406 n=13+12) SetOperation/n=128/Go_SymmetricDifference-2 332µs ± 3% 330µs ± 4% -0.67% (p=0.033 n=14+15) SetOperation/n=128/Go_Union-2 251µs ± 2% 250µs ± 2% -0.58% (p=0.029 n=13+13) SetOperation/n=128/GEOS_Intersection-2 50.2µs ± 2% 50.4µs ± 2% ~ (p=0.220 n=14+13) SetOperation/n=128/GEOS_Difference-2 59.7µs ± 6% 59.4µs ± 3% ~ (p=0.793 n=14+13) SetOperation/n=128/GEOS_SymmetricDifference-2 143µs ± 3% 144µs ± 3% +1.08% (p=0.010 n=13+13) SetOperation/n=128/GEOS_Union-2 65.5µs ± 1% 65.1µs ± 2% -0.68% (p=0.012 n=14+13) SetOperation/n=256/Go_Intersection-2 445µs ± 1% 445µs ± 1% ~ (p=0.810 n=13+12) SetOperation/n=256/Go_Difference-2 482µs ± 2% 483µs ± 3% ~ (p=0.943 n=13+14) SetOperation/n=256/Go_SymmetricDifference-2 680µs ± 1% 680µs ± 3% ~ (p=0.503 n=12+13) SetOperation/n=256/Go_Union-2 508µs ± 1% 503µs ± 1% -0.98% (p=0.000 n=14+12) SetOperation/n=256/GEOS_Intersection-2 84.7µs ± 4% 84.6µs ± 3% ~ (p=0.967 n=15+15) SetOperation/n=256/GEOS_Difference-2 119µs ± 3% 120µs ± 2% ~ (p=0.093 n=15+12) SetOperation/n=256/GEOS_SymmetricDifference-2 322µs ± 2% 322µs ± 3% ~ (p=0.943 n=14+13) SetOperation/n=256/GEOS_Union-2 139µs ± 2% 140µs ± 2% +0.71% (p=0.014 n=13+13) SetOperation/n=512/Go_Intersection-2 934µs ± 8% 934µs ±10% ~ (p=0.720 n=14+13) SetOperation/n=512/Go_Difference-2 1.02ms ±16% 1.11ms ±19% +8.95% (p=0.006 n=14+14) SetOperation/n=512/Go_SymmetricDifference-2 1.41ms ± 7% 1.37ms ± 3% -3.13% (p=0.000 n=14+14) SetOperation/n=512/Go_Union-2 1.04ms ± 5% 1.03ms ± 8% ~ (p=0.091 n=13+13) SetOperation/n=512/GEOS_Intersection-2 173µs ± 2% 173µs ± 2% ~ (p=0.940 n=14+12) SetOperation/n=512/GEOS_Difference-2 234µs ± 1% 237µs ± 2% +1.13% (p=0.002 n=11+14) SetOperation/n=512/GEOS_SymmetricDifference-2 645µs ± 2% 644µs ± 1% ~ (p=0.717 n=15+13) SetOperation/n=512/GEOS_Union-2 290µs ±11% 291µs ± 6% ~ (p=0.635 n=14+14) SetOperation/n=1024/Go_Intersection-2 1.82ms ± 4% 1.81ms ± 3% ~ (p=0.685 n=13+14) SetOperation/n=1024/Go_Difference-2 2.07ms ± 7% 2.01ms ± 2% -2.76% (p=0.000 n=15+13) SetOperation/n=1024/Go_SymmetricDifference-2 2.99ms ± 2% 3.00ms ± 7% ~ (p=0.960 n=13+13) SetOperation/n=1024/Go_Union-2 2.21ms ± 7% 2.16ms ± 1% ~ (p=0.201 n=15+13) SetOperation/n=1024/GEOS_Intersection-2 347µs ± 1% 351µs ± 4% ~ (p=0.118 n=12+14) SetOperation/n=1024/GEOS_Difference-2 531µs ± 7% 537µs ±10% ~ (p=0.425 n=14+15) SetOperation/n=1024/GEOS_SymmetricDifference-2 1.46ms ±12% 1.47ms ± 8% ~ (p=0.539 n=15+15) SetOperation/n=1024/GEOS_Union-2 646µs ±12% 620µs ± 4% ~ (p=0.412 n=15+15) SetOperation/n=2048/Go_Intersection-2 3.99ms ± 6% 3.94ms ± 5% ~ (p=0.202 n=15+15) SetOperation/n=2048/Go_Difference-2 4.20ms ± 4% 4.25ms ± 7% ~ (p=0.150 n=14+14) SetOperation/n=2048/Go_SymmetricDifference-2 6.20ms ± 8% 6.10ms ± 6% ~ (p=0.187 n=15+15) SetOperation/n=2048/Go_Union-2 4.49ms ± 4% 4.46ms ± 4% ~ (p=0.054 n=13+14) SetOperation/n=2048/GEOS_Intersection-2 782µs ± 5% 763µs ± 3% -2.38% (p=0.038 n=13+14) SetOperation/n=2048/GEOS_Difference-2 1.05ms ± 7% 1.03ms ± 3% -1.88% (p=0.014 n=14+13) SetOperation/n=2048/GEOS_SymmetricDifference-2 2.88ms ± 5% 2.89ms ±16% ~ (p=0.527 n=12+14) SetOperation/n=2048/GEOS_Union-2 1.23ms ± 6% 1.22ms ± 6% ~ (p=0.920 n=13+13) SetOperation/n=4096/Go_Intersection-2 8.56ms ± 9% 8.42ms ±13% ~ (p=0.265 n=14+14) SetOperation/n=4096/Go_Difference-2 10.2ms ±22% 9.9ms ±16% ~ (p=0.512 n=15+15) SetOperation/n=4096/Go_SymmetricDifference-2 13.8ms ±17% 13.7ms ±21% ~ (p=0.624 n=15+15) SetOperation/n=4096/Go_Union-2 10.3ms ±14% 10.6ms ±15% ~ (p=0.331 n=14+15) SetOperation/n=4096/GEOS_Intersection-2 1.46ms ± 2% 1.47ms ± 2% ~ (p=0.322 n=12+14) SetOperation/n=4096/GEOS_Difference-2 2.17ms ±10% 2.13ms ± 2% ~ (p=0.390 n=13+13) SetOperation/n=4096/GEOS_SymmetricDifference-2 6.91ms ±18% 7.11ms ±24% ~ (p=0.458 n=13+14) SetOperation/n=4096/GEOS_Union-2 3.12ms ±41% 2.73ms ±23% -12.25% (p=0.016 n=15+15) SetOperation/n=8192/Go_Intersection-2 19.0ms ±19% 19.0ms ±20% ~ (p=0.935 n=15+15) SetOperation/n=8192/Go_Difference-2 19.6ms ±10% 20.5ms ±26% ~ (p=0.512 n=15+15) SetOperation/n=8192/Go_SymmetricDifference-2 30.7ms ±12% 32.4ms ±18% ~ (p=0.316 n=13+15) SetOperation/n=8192/Go_Union-2 20.9ms ±10% 20.8ms ±18% ~ (p=0.270 n=15+14) SetOperation/n=8192/GEOS_Intersection-2 3.32ms ± 8% 3.38ms ±10% ~ (p=0.436 n=15+15) SetOperation/n=8192/GEOS_Difference-2 4.48ms ±10% 4.38ms ± 7% ~ (p=0.482 n=14+14) SetOperation/n=8192/GEOS_SymmetricDifference-2 14.0ms ±23% 14.0ms ±23% ~ (p=1.000 n=15+15) SetOperation/n=8192/GEOS_Union-2 5.25ms ±13% 5.26ms ±14% ~ (p=0.621 n=15+14) SetOperation/n=16384/Go_Intersection-2 45.4ms ±52% 39.0ms ±23% ~ (p=0.160 n=14+12) SetOperation/n=16384/Go_Difference-2 49.0ms ±75% 51.1ms ±53% ~ (p=0.550 n=13+14) SetOperation/n=16384/Go_SymmetricDifference-2 61.6ms ±22% 76.3ms ±124% ~ (p=0.110 n=12+13) SetOperation/n=16384/Go_Union-2 57.5ms ±88% 47.4ms ±17% ~ (p=0.440 n=15+13) SetOperation/n=16384/GEOS_Intersection-2 6.68ms ±20% 6.91ms ±23% ~ (p=0.387 n=13+15) SetOperation/n=16384/GEOS_Difference-2 9.45ms ± 4% 9.69ms ± 8% +2.51% (p=0.011 n=14+14) SetOperation/n=16384/GEOS_SymmetricDifference-2 26.5ms ± 4% 27.1ms ± 6% +2.11% (p=0.023 n=15+14) SetOperation/n=16384/GEOS_Union-2 11.7ms ± 6% 11.5ms ± 5% ~ (p=0.477 n=14+15) pkg:github.com/peterstace/simplefeatures/rtree goos:linux goarch:arm64 Delete/n=100-2 10.7µs ± 2% 10.7µs ± 2% ~ (p=0.214 n=14+14) Delete/n=1000-2 441µs ± 7% 437µs ± 1% ~ (p=0.270 n=14+15) Delete/n=10000-2 23.9ms ± 1% 24.0ms ± 1% ~ (p=0.078 n=12+12) Bulk/n=10-2 440ns ± 1% 442ns ± 2% ~ (p=0.383 n=12+13) Bulk/n=100-2 8.98µs ± 2% 8.97µs ± 1% ~ (p=0.429 n=13+12) Bulk/n=1000-2 188µs ± 1% 188µs ± 1% ~ (p=0.478 n=12+12) Bulk/n=10000-2 2.74ms ± 0% 2.74ms ± 0% ~ (p=0.319 n=12+12) Bulk/n=100000-2 32.4ms ± 3% 32.9ms ± 5% ~ (p=0.290 n=14+15) Insert/n=10-2 777ns ± 1% 779ns ± 2% ~ (p=0.650 n=12+13) Insert/n=100-2 13.5µs ± 1% 13.6µs ± 1% ~ (p=0.574 n=14+13) Insert/n=1000-2 279µs ± 1% 280µs ± 3% ~ (p=0.723 n=14+15) Insert/n=10000-2 3.74ms ± 1% 3.76ms ± 2% ~ (p=0.118 n=12+14) Insert/n=100000-2 44.6ms ± 1% 44.6ms ± 1% ~ (p=0.734 n=14+14) RangeSearch/n=10-2 10.5ns ± 5% 10.6ns ± 5% ~ (p=0.119 n=15+14) RangeSearch/n=100-2 45.3ns ± 6% 45.1ns ± 6% ~ (p=0.976 n=15+15) RangeSearch/n=1000-2 164ns ± 4% 167ns ± 5% ~ (p=0.213 n=15+15) RangeSearch/n=10000-2 589ns ± 4% 595ns ± 4% ~ (p=0.418 n=15+15) RangeSearch/n=100000-2 5.72µs ± 4% 5.72µs ± 3% ~ (p=0.783 n=15+15) name old alloc/op new alloc/op delta pkg:github.com/peterstace/simplefeatures/geom goos:linux goarch:arm64 LineEnvelope/0-2 0.00B 0.00B ~ (all equal) LineEnvelope/1-2 0.00B 0.00B ~ (all equal) LineEnvelope/2-2 0.00B 0.00B ~ (all equal) LineEnvelope/3-2 0.00B 0.00B ~ (all equal) MarshalWKB/polygon/n=10-2 232B ± 0% 232B ± 0% ~ (all equal) MarshalWKB/polygon/n=100-2 1.83kB ± 0% 1.83kB ± 0% ~ (all equal) MarshalWKB/polygon/n=1000-2 16.4kB ± 0% 16.4kB ± 0% ~ (all equal) MarshalWKB/polygon/n=10000-2 164kB ± 0% 164kB ± 0% ~ (all equal) UnmarshalWKB/polygon/n=10-2 284B ± 0% 284B ± 0% ~ (all equal) UnmarshalWKB/polygon/n=100-2 1.90kB ± 0% 1.90kB ± 0% ~ (all equal) UnmarshalWKB/polygon/n=1000-2 16.5kB ± 0% 16.5kB ± 0% ~ (all equal) UnmarshalWKB/polygon/n=10000-2 164kB ± 0% 164kB ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=10-2 2.42kB ± 0% 2.42kB ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=100-2 30.4kB ± 0% 30.4kB ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=1000-2 205kB ± 0% 205kB ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=10000-2 2.63MB ± 0% 2.63MB ± 0% ~ (p=0.480 n=13+13) IntersectsMultiPointWithMultiPoint/n=20-2 324B ± 0% 324B ± 0% ~ (all equal) IntersectsMultiPointWithMultiPoint/n=200-2 3.06kB ± 0% 3.07kB ± 0% ~ (p=0.699 n=15+15) IntersectsMultiPointWithMultiPoint/n=2000-2 49.3kB ± 0% 49.3kB ± 0% +0.00% (p=0.011 n=15+15) IntersectsMultiPointWithMultiPoint/n=20000-2 339kB ± 0% 339kB ± 0% ~ (p=0.707 n=14+15) PolygonSingleRingValidation/n=10-2 2.29kB ± 0% 2.29kB ± 0% ~ (all equal) PolygonSingleRingValidation/n=100-2 24.4kB ± 0% 24.4kB ± 0% ~ (all equal) PolygonSingleRingValidation/n=1000-2 140kB ± 0% 140kB ± 0% ~ (all equal) PolygonSingleRingValidation/n=10000-2 1.97MB ± 0% 1.97MB ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=4-2 6.61kB ± 0% 6.61kB ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=36-2 53.2kB ± 0% 53.2kB ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=400-2 597kB ± 0% 597kB ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=4096-2 6.28MB ± 0% 6.28MB ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=10-2 9.62kB ± 0% 9.62kB ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=100-2 88.0kB ± 0% 88.0kB ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=1000-2 551kB ± 0% 551kB ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=10000-2 7.24MB ± 0% 7.24MB ± 0% ~ (all equal) PolygonAnnulusValidation/n=10-2 4.10kB ± 0% 4.10kB ± 0% ~ (all equal) PolygonAnnulusValidation/n=100-2 28.4kB ± 0% 28.4kB ± 0% ~ (all equal) PolygonAnnulusValidation/n=1000-2 379kB ± 0% 379kB ± 0% ~ (all equal) PolygonAnnulusValidation/n=10000-2 3.89MB ± 0% 3.89MB ± 0% ~ (all equal) MultipolygonValidation/n=1-2 481B ± 0% 481B ± 0% ~ (all equal) MultipolygonValidation/n=4-2 980B ± 0% 980B ± 0% ~ (all equal) MultipolygonValidation/n=16-2 4.16kB ± 0% 4.16kB ± 0% ~ (all equal) MultipolygonValidation/n=64-2 17.0kB ± 0% 17.0kB ± 0% ~ (all equal) MultipolygonValidation/n=256-2 67.8kB ± 0% 67.8kB ± 0% ~ (all equal) MultipolygonValidation/n=1024-2 271kB ± 0% 271kB ± 0% ~ (all equal) MultiPolygonTwoCircles/n=10-2 5.15kB ± 0% 5.15kB ± 0% ~ (all equal) MultiPolygonTwoCircles/n=100-2 55.1kB ± 0% 55.1kB ± 0% ~ (all equal) MultiPolygonTwoCircles/n=1000-2 345kB ± 0% 345kB ± 0% ~ (all equal) MultiPolygonTwoCircles/n=10000-2 4.60MB ± 0% 4.60MB ± 0% ~ (p=0.705 n=14+12) MultiPolygonMultipleTouchingPoints/n=1-2 4.16kB ± 0% 4.16kB ± 0% ~ (all equal) MultiPolygonMultipleTouchingPoints/n=10-2 23.9kB ± 0% 23.9kB ± 0% ~ (p=1.000 n=14+15) MultiPolygonMultipleTouchingPoints/n=100-2 182kB ± 0% 182kB ± 0% ~ (p=0.151 n=13+15) MultiPolygonMultipleTouchingPoints/n=1000-2 2.16MB ± 0% 2.16MB ± 0% ~ (p=0.467 n=15+15) WKTParsing/point-2 1.89kB ± 0% 1.89kB ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=100_swap=false-2 40.7kB ± 0% 40.7kB ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=100_swap=true-2 40.7kB ± 0% 40.7kB ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=1000_swap=false-2 369kB ± 0% 369kB ± 0% ~ (p=0.248 n=12+14) DistancePolygonToPolygonOrdering/n=1000_swap=true-2 369kB ± 0% 369kB ± 0% ~ (p=0.789 n=15+13) IntersectionPolygonWithPolygonOrdering/n=100_swap=false-2 5.52kB ± 0% 5.52kB ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=100_swap=true-2 5.52kB ± 0% 5.52kB ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=1000_swap=false-2 60.1kB ± 0% 60.1kB ± 0% +0.00% (p=0.006 n=15+12) IntersectionPolygonWithPolygonOrdering/n=1000_swap=true-2 60.1kB ± 0% 60.1kB ± 0% ~ (p=1.000 n=15+15) MultiLineStringIsSimpleManyLineStrings/n=100-2 59.2kB ± 0% 59.2kB ± 0% ~ (all equal) MultiLineStringIsSimpleManyLineStrings/n=1000-2 491kB ± 0% 491kB ± 0% ~ (all equal) ForceCWandForceCCW/0-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/0#01-2 144B ± 0% 144B ± 0% ~ (all equal) ForceCWandForceCCW/1-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/1#01-2 144B ± 0% 144B ± 0% ~ (all equal) ForceCWandForceCCW/2-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/2#01-2 256B ± 0% 256B ± 0% ~ (all equal) ForceCWandForceCCW/3-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/3#01-2 256B ± 0% 256B ± 0% ~ (all equal) ForceCWandForceCCW/4-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/4#01-2 416B ± 0% 416B ± 0% ~ (all equal) ForceCWandForceCCW/5-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/5#01-2 416B ± 0% 416B ± 0% ~ (all equal) ForceCWandForceCCW/6-2 0.00B 0.00B ~ (all equal) ForceCWandForceCCW/6#01-2 624B ± 0% 624B ± 0% ~ (all equal) EnvelopeTransformXY-2 0.00B 0.00B ~ (all equal) WKBParse/0-2 112B ± 0% 112B ± 0% ~ (all equal) WKBParse/1-2 112B ± 0% 112B ± 0% ~ (all equal) WKBParse/2-2 112B ± 0% 112B ± 0% ~ (all equal) WKBParse/3-2 112B ± 0% 112B ± 0% ~ (all equal) WKBParse/4-2 176B ± 0% 176B ± 0% ~ (all equal) WKBParse/5-2 120B ± 0% 120B ± 0% ~ (all equal) WKBParse/6-2 120B ± 0% 120B ± 0% ~ (all equal) WKBParse/7-2 120B ± 0% 120B ± 0% ~ (all equal) WKBParse/8-2 184B ± 0% 184B ± 0% ~ (all equal) WKBParse/9-2 72.0B ± 0% 72.0B ± 0% ~ (all equal) WKBParse/10-2 72.0B ± 0% 72.0B ± 0% ~ (all equal) WKBParse/11-2 72.0B ± 0% 72.0B ± 0% ~ (all equal) WKBParse/12-2 72.0B ± 0% 72.0B ± 0% ~ (all equal) WKBParse/13-2 200B ± 0% 200B ± 0% ~ (all equal) WKBParse/14-2 216B ± 0% 216B ± 0% ~ (all equal) WKBParse/15-2 216B ± 0% 216B ± 0% ~ (all equal) WKBParse/16-2 360B ± 0% 360B ± 0% ~ (all equal) WKBParse/17-2 216B ± 0% 216B ± 0% ~ (all equal) WKBParse/18-2 376B ± 0% 376B ± 0% ~ (all equal) WKBParse/19-2 376B ± 0% 376B ± 0% ~ (all equal) WKBParse/20-2 392B ± 0% 392B ± 0% ~ (all equal) WKBParse/21-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/22-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/23-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/24-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/25-2 808B ± 0% 808B ± 0% ~ (all equal) WKBParse/26-2 872B ± 0% 872B ± 0% ~ (all equal) WKBParse/27-2 872B ± 0% 872B ± 0% ~ (all equal) WKBParse/28-2 1.45kB ± 0% 1.45kB ± 0% ~ (all equal) WKBParse/29-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/30-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/31-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/32-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/33-2 248B ± 0% 248B ± 0% ~ (all equal) WKBParse/34-2 312B ± 0% 312B ± 0% ~ (all equal) WKBParse/35-2 312B ± 0% 312B ± 0% ~ (all equal) WKBParse/36-2 312B ± 0% 312B ± 0% ~ (all equal) WKBParse/37-2 456B ± 0% 456B ± 0% ~ (all equal) WKBParse/38-2 584B ± 0% 584B ± 0% ~ (all equal) WKBParse/39-2 584B ± 0% 584B ± 0% ~ (all equal) WKBParse/40-2 584B ± 0% 584B ± 0% ~ (all equal) WKBParse/41-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/42-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/43-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/44-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/45-2 440B ± 0% 440B ± 0% ~ (all equal) WKBParse/46-2 472B ± 0% 472B ± 0% ~ (all equal) WKBParse/47-2 472B ± 0% 472B ± 0% ~ (all equal) WKBParse/48-2 488B ± 0% 488B ± 0% ~ (all equal) WKBParse/49-2 568B ± 0% 568B ± 0% ~ (all equal) WKBParse/50-2 872B ± 0% 872B ± 0% ~ (all equal) WKBParse/51-2 872B ± 0% 872B ± 0% ~ (all equal) WKBParse/52-2 904B ± 0% 904B ± 0% ~ (all equal) WKBParse/53-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/54-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/55-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/56-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/57-2 1.07kB ± 0% 1.07kB ± 0% ~ (all equal) WKBParse/58-2 1.14kB ± 0% 1.14kB ± 0% ~ (all equal) WKBParse/59-2 1.14kB ± 0% 1.14kB ± 0% ~ (all equal) WKBParse/60-2 1.71kB ± 0% 1.71kB ± 0% ~ (all equal) WKBParse/61-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/62-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/63-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/64-2 64.0B ± 0% 64.0B ± 0% ~ (all equal) WKBParse/65-2 424B ± 0% 424B ± 0% ~ (all equal) WKBParse/66-2 552B ± 0% 552B ± 0% ~ (all equal) WKBParse/67-2 552B ± 0% 552B ± 0% ~ (all equal) WKBParse/68-2 552B ± 0% 552B ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/geos goos:linux goarch:arm64 IntersectionWithoutValidation/n=10-2 1.32kB ± 0% 1.32kB ± 0% ~ (all equal) IntersectionWithoutValidation/n=100-2 6.46kB ± 0% 6.46kB ± 0% ~ (all equal) IntersectionWithoutValidation/n=1000-2 55.1kB ± 0% 55.1kB ± 0% ~ (all equal) IntersectionWithoutValidation/n=10000-2 558kB ± 0% 558kB ± 0% ~ (p=0.196 n=14+13) NoOp/n=10-2 952B ± 0% 952B ± 0% ~ (all equal) NoOp/n=100-2 5.77kB ± 0% 5.77kB ± 0% ~ (all equal) NoOp/n=1000-2 49.5kB ± 0% 49.5kB ± 0% ~ (all equal) NoOp/n=10000-2 492kB ± 0% 492kB ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/internal/perf goos:linux goarch:arm64 LineStringIsSimpleCircle/n=10-2 1.87kB ± 0% 1.87kB ± 0% ~ (all equal) LineStringIsSimpleCircle/n=100-2 24.0kB ± 0% 24.0kB ± 0% ~ (all equal) LineStringIsSimpleCircle/n=1000-2 139kB ± 0% 139kB ± 0% ~ (all equal) LineStringIsSimpleCircle/n=10000-2 1.97MB ± 0% 1.97MB ± 0% ~ (p=0.464 n=13+14) LineStringIsSimpleZigZag/10-2 1.84kB ± 0% 1.84kB ± 0% ~ (all equal) LineStringIsSimpleZigZag/100-2 24.0kB ± 0% 24.0kB ± 0% ~ (all equal) LineStringIsSimpleZigZag/1000-2 139kB ± 0% 139kB ± 0% ~ (all equal) LineStringIsSimpleZigZag/10000-2 1.97MB ± 0% 1.97MB ± 0% ~ (p=0.451 n=15+15) SetOperation/n=4/Go_Intersection-2 20.3kB ± 0% 19.5kB ± 0% -4.11% (p=0.000 n=15+15) SetOperation/n=4/Go_Difference-2 21.3kB ± 0% 20.4kB ± 0% -3.94% (p=0.000 n=15+15) SetOperation/n=4/Go_SymmetricDifference-2 29.3kB ± 0% 28.5kB ± 0% -2.85% (p=0.000 n=15+15) SetOperation/n=4/Go_Union-2 22.0kB ± 0% 21.1kB ± 0% -3.80% (p=0.000 n=15+15) SetOperation/n=4/GEOS_Intersection-2 1.77kB ± 0% 1.77kB ± 0% ~ (all equal) SetOperation/n=4/GEOS_Difference-2 2.78kB ± 0% 2.78kB ± 0% ~ (all equal) SetOperation/n=4/GEOS_SymmetricDifference-2 10.7kB ± 0% 10.7kB ± 0% ~ (all equal) SetOperation/n=4/GEOS_Union-2 3.21kB ± 0% 3.21kB ± 0% ~ (all equal) SetOperation/n=8/Go_Intersection-2 27.0kB ± 0% 26.1kB ± 0% -3.56% (p=0.000 n=14+15) SetOperation/n=8/Go_Difference-2 27.1kB ± 0% 26.2kB ± 0% -3.55% (p=0.000 n=15+15) SetOperation/n=8/Go_SymmetricDifference-2 36.8kB ± 0% 35.9kB ± 0% -2.63% (p=0.000 n=15+15) SetOperation/n=8/Go_Union-2 27.3kB ± 0% 26.3kB ± 0% -3.54% (p=0.000 n=15+15) SetOperation/n=8/GEOS_Intersection-2 3.34kB ± 0% 3.34kB ± 0% ~ (all equal) SetOperation/n=8/GEOS_Difference-2 3.50kB ± 0% 3.50kB ± 0% ~ (all equal) SetOperation/n=8/GEOS_SymmetricDifference-2 13.0kB ± 0% 13.0kB ± 0% ~ (all equal) SetOperation/n=8/GEOS_Union-2 3.62kB ± 0% 3.62kB ± 0% ~ (all equal) SetOperation/n=16/Go_Intersection-2 37.3kB ± 0% 36.0kB ± 0% -3.27% (p=0.000 n=15+15) SetOperation/n=16/Go_Difference-2 40.4kB ± 0% 39.2kB ± 0% -3.02% (p=0.000 n=15+15) SetOperation/n=16/Go_SymmetricDifference-2 58.7kB ± 0% 57.4kB ± 0% -2.08% (p=0.000 n=15+15) SetOperation/n=16/Go_Union-2 41.9kB ± 0% 40.7kB ± 0% -2.91% (p=0.000 n=14+15) SetOperation/n=16/GEOS_Intersection-2 3.88kB ± 0% 3.88kB ± 0% ~ (all equal) SetOperation/n=16/GEOS_Difference-2 6.68kB ± 0% 6.68kB ± 0% ~ (all equal) SetOperation/n=16/GEOS_SymmetricDifference-2 24.7kB ± 0% 24.7kB ± 0% ~ (all equal) SetOperation/n=16/GEOS_Union-2 8.28kB ± 0% 8.28kB ± 0% ~ (all equal) SetOperation/n=32/Go_Intersection-2 67.8kB ± 0% 66.1kB ± 0% -2.55% (p=0.000 n=15+13) SetOperation/n=32/Go_Difference-2 70.4kB ± 0% 68.7kB ± 0% -2.46% (p=0.000 n=14+14) SetOperation/n=32/Go_SymmetricDifference-2 100kB ± 0% 98kB ± 0% -1.74% (p=0.000 n=13+15) SetOperation/n=32/Go_Union-2 70.9kB ± 0% 69.1kB ± 0% -2.45% (p=0.000 n=14+14) SetOperation/n=32/GEOS_Intersection-2 8.86kB ± 0% 8.86kB ± 0% ~ (all equal) SetOperation/n=32/GEOS_Difference-2 10.7kB ± 0% 10.7kB ± 0% ~ (all equal) SetOperation/n=32/GEOS_SymmetricDifference-2 38.9kB ± 0% 38.9kB ± 0% ~ (all equal) SetOperation/n=32/GEOS_Union-2 11.5kB ± 0% 11.5kB ± 0% ~ (all equal) SetOperation/n=64/Go_Intersection-2 113kB ± 0% 110kB ± 0% -2.55% (p=0.000 n=15+15) SetOperation/n=64/Go_Difference-2 125kB ± 0% 122kB ± 0% -2.30% (p=0.000 n=15+15) SetOperation/n=64/Go_SymmetricDifference-2 191kB ± 0% 188kB ± 0% -1.51% (p=0.000 n=15+15) SetOperation/n=64/Go_Union-2 129kB ± 0% 126kB ± 0% -2.23% (p=0.000 n=15+15) SetOperation/n=64/GEOS_Intersection-2 12.6kB ± 0% 12.6kB ± 0% ~ (all equal) SetOperation/n=64/GEOS_Difference-2 23.5kB ± 0% 23.5kB ± 0% ~ (all equal) SetOperation/n=64/GEOS_SymmetricDifference-2 87.1kB ± 0% 87.1kB ± 0% ~ (all equal) SetOperation/n=64/GEOS_Union-2 28.0kB ± 0% 28.0kB ± 0% ~ (all equal) SetOperation/n=128/Go_Intersection-2 230kB ± 0% 225kB ± 0% -2.19% (p=0.000 n=15+15) SetOperation/n=128/Go_Difference-2 242kB ± 0% 237kB ± 0% -2.08% (p=0.000 n=15+15) SetOperation/n=128/Go_SymmetricDifference-2 352kB ± 0% 347kB ± 0% -1.43% (p=0.000 n=15+13) SetOperation/n=128/Go_Union-2 244kB ± 0% 239kB ± 0% -2.06% (p=0.000 n=15+15) SetOperation/n=128/GEOS_Intersection-2 30.3kB ± 0% 30.3kB ± 0% ~ (all equal) SetOperation/n=128/GEOS_Difference-2 40.0kB ± 0% 40.0kB ± 0% ~ (all equal) SetOperation/n=128/GEOS_SymmetricDifference-2 147kB ± 0% 147kB ± 0% ~ (all equal) SetOperation/n=128/GEOS_Union-2 43.1kB ± 0% 43.1kB ± 0% ~ (all equal) SetOperation/n=256/Go_Intersection-2 409kB ± 0% 399kB ± 0% -2.36% (p=0.000 n=15+15) SetOperation/n=256/Go_Difference-2 456kB ± 0% 447kB ± 0% -2.11% (p=0.000 n=15+14) SetOperation/n=256/Go_SymmetricDifference-2 710kB ± 0% 700kB ± 0% -1.36% (p=0.000 n=15+15) SetOperation/n=256/Go_Union-2 467kB ± 0% 457kB ± 0% -2.06% (p=0.000 n=15+15) SetOperation/n=256/GEOS_Intersection-2 48.2kB ± 0% 48.2kB ± 0% ~ (all equal) SetOperation/n=256/GEOS_Difference-2 92.6kB ± 0% 92.6kB ± 0% ~ (all equal) SetOperation/n=256/GEOS_SymmetricDifference-2 340kB ± 0% 340kB ± 0% ~ (p=0.070 n=15+13) SetOperation/n=256/GEOS_Union-2 106kB ± 0% 106kB ± 0% ~ (all equal) SetOperation/n=512/Go_Intersection-2 848kB ± 0% 830kB ± 0% -2.13% (p=0.000 n=15+14) SetOperation/n=512/Go_Difference-2 896kB ± 0% 878kB ± 0% -2.01% (p=0.000 n=15+15) SetOperation/n=512/Go_SymmetricDifference-2 1.32MB ± 0% 1.30MB ± 0% -1.36% (p=0.000 n=15+15) SetOperation/n=512/Go_Union-2 917kB ± 0% 899kB ± 0% -1.97% (p=0.000 n=15+15) SetOperation/n=512/GEOS_Intersection-2 115kB ± 0% 115kB ± 0% ~ (all equal) SetOperation/n=512/GEOS_Difference-2 159kB ± 0% 159kB ± 0% ~ (all equal) SetOperation/n=512/GEOS_SymmetricDifference-2 576kB ± 0% 576kB ± 0% ~ (p=0.548 n=15+15) SetOperation/n=512/GEOS_Union-2 171kB ± 0% 171kB ± 0% ~ (all equal) SetOperation/n=1024/Go_Intersection-2 1.59MB ± 0% 1.55MB ± 0% -2.22% (p=0.000 n=15+15) SetOperation/n=1024/Go_Difference-2 1.78MB ± 0% 1.74MB ± 0% -1.99% (p=0.000 n=15+15) SetOperation/n=1024/Go_SymmetricDifference-2 2.81MB ± 0% 2.77MB ± 0% -1.26% (p=0.000 n=15+15) SetOperation/n=1024/Go_Union-2 1.84MB ± 0% 1.80MB ± 0% -1.92% (p=0.000 n=15+15) SetOperation/n=1024/GEOS_Intersection-2 189kB ± 0% 189kB ± 0% ~ (all equal) SetOperation/n=1024/GEOS_Difference-2 369kB ± 0% 369kB ± 0% ~ (all equal) SetOperation/n=1024/GEOS_SymmetricDifference-2 1.38MB ± 0% 1.38MB ± 0% ~ (p=0.426 n=10+14) SetOperation/n=1024/GEOS_Union-2 415kB ± 0% 415kB ± 0% ~ (all equal) SetOperation/n=2048/Go_Intersection-2 3.49MB ± 0% 3.41MB ± 0% -2.08% (p=0.000 n=14+15) SetOperation/n=2048/Go_Difference-2 3.68MB ± 0% 3.61MB ± 0% -1.97% (p=0.000 n=15+15) SetOperation/n=2048/Go_SymmetricDifference-2 5.41MB ± 0% 5.34MB ± 0% -1.34% (p=0.000 n=15+15) SetOperation/n=2048/Go_Union-2 3.76MB ± 0% 3.69MB ± 0% -1.92% (p=0.000 n=15+15) SetOperation/n=2048/GEOS_Intersection-2 460kB ± 0% 460kB ± 0% ~ (all equal) SetOperation/n=2048/GEOS_Difference-2 648kB ± 0% 648kB ± 0% ~ (all equal) SetOperation/n=2048/GEOS_SymmetricDifference-2 2.32MB ± 0% 2.32MB ± 0% ~ (p=0.158 n=14+11) SetOperation/n=2048/GEOS_Union-2 689kB ± 0% 689kB ± 0% ~ (all equal) SetOperation/n=4096/Go_Intersection-2 6.68MB ± 0% 6.53MB ± 0% -2.16% (p=0.000 n=15+14) SetOperation/n=4096/Go_Difference-2 7.40MB ± 0% 7.25MB ± 0% -1.95% (p=0.000 n=15+14) SetOperation/n=4096/Go_SymmetricDifference-2 11.4MB ± 0% 11.3MB ± 0% -1.26% (p=0.000 n=15+15) SetOperation/n=4096/Go_Union-2 7.64MB ± 0% 7.50MB ± 0% -1.88% (p=0.000 n=14+15) SetOperation/n=4096/GEOS_Intersection-2 755kB ± 0% 755kB ± 0% ~ (p=0.363 n=15+14) SetOperation/n=4096/GEOS_Difference-2 1.45MB ± 0% 1.45MB ± 0% ~ (all equal) SetOperation/n=4096/GEOS_SymmetricDifference-2 5.34MB ± 0% 5.34MB ± 0% ~ (all equal) SetOperation/n=4096/GEOS_Union-2 1.63MB ± 0% 1.63MB ± 0% ~ (p=0.100 n=14+15) SetOperation/n=8192/Go_Intersection-2 14.3MB ± 0% 14.0MB ± 0% -2.01% (p=0.000 n=15+15) SetOperation/n=8192/Go_Difference-2 15.2MB ± 0% 14.9MB ± 0% -1.89% (p=0.000 n=15+15) SetOperation/n=8192/Go_SymmetricDifference-2 22.1MB ± 0% 21.8MB ± 0% -1.30% (p=0.000 n=15+15) SetOperation/n=8192/Go_Union-2 15.5MB ± 0% 15.2MB ± 0% -1.85% (p=0.000 n=14+15) SetOperation/n=8192/GEOS_Intersection-2 1.76MB ± 0% 1.76MB ± 0% ~ (p=0.223 n=10+15) SetOperation/n=8192/GEOS_Difference-2 2.47MB ± 0% 2.47MB ± 0% ~ (all equal) SetOperation/n=8192/GEOS_SymmetricDifference-2 9.01MB ± 0% 9.01MB ± 0% ~ (all equal) SetOperation/n=8192/GEOS_Union-2 2.66MB ± 0% 2.66MB ± 0% ~ (all equal) SetOperation/n=16384/Go_Intersection-2 26.5MB ± 0% 26.0MB ± 0% -2.04% (p=0.000 n=15+14) SetOperation/n=16384/Go_Difference-2 29.4MB ± 0% 28.8MB ± 0% -1.84% (p=0.000 n=15+14) SetOperation/n=16384/Go_SymmetricDifference-2 45.4MB ± 0% 44.8MB ± 0% -1.19% (p=0.000 n=15+15) SetOperation/n=16384/Go_Union-2 30.3MB ± 0% 29.8MB ± 0% -1.79% (p=0.000 n=15+15) SetOperation/n=16384/GEOS_Intersection-2 2.92MB ± 0% 2.92MB ± 0% ~ (p=0.161 n=15+14) SetOperation/n=16384/GEOS_Difference-2 5.68MB ± 0% 5.68MB ± 0% ~ (all equal) SetOperation/n=16384/GEOS_SymmetricDifference-2 21.1MB ± 0% 21.1MB ± 0% ~ (all equal) SetOperation/n=16384/GEOS_Union-2 6.45MB ± 0% 6.45MB ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/rtree goos:linux goarch:arm64 Delete/n=100-2 712B ± 0% 712B ± 0% ~ (all equal) Delete/n=1000-2 26.1kB ± 0% 26.1kB ± 0% ~ (all equal) Delete/n=10000-2 412kB ± 0% 412kB ± 0% ~ (all equal) Bulk/n=10-2 1.46kB ± 0% 1.46kB ± 0% ~ (all equal) Bulk/n=100-2 19.9kB ± 0% 19.9kB ± 0% ~ (all equal) Bulk/n=1000-2 98.2kB ± 0% 98.2kB ± 0% ~ (all equal) Bulk/n=10000-2 1.57MB ± 0% 1.57MB ± 0% ~ (all equal) Bulk/n=100000-2 20.4MB ± 0% 20.4MB ± 0% ~ (all equal) Insert/n=10-2 1.44kB ± 0% 1.44kB ± 0% ~ (all equal) Insert/n=100-2 13.5kB ± 0% 13.5kB ± 0% ~ (all equal) Insert/n=1000-2 132kB ± 0% 132kB ± 0% ~ (all equal) Insert/n=10000-2 1.34MB ± 0% 1.34MB ± 0% ~ (all equal) Insert/n=100000-2 13.5MB ± 0% 13.5MB ± 0% ~ (all equal) RangeSearch/n=10-2 0.00B 0.00B ~ (all equal) RangeSearch/n=100-2 0.00B 0.00B ~ (all equal) RangeSearch/n=1000-2 0.00B 0.00B ~ (all equal) RangeSearch/n=10000-2 0.00B 0.00B ~ (all equal) RangeSearch/n=100000-2 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta pkg:github.com/peterstace/simplefeatures/geom goos:linux goarch:arm64 LineEnvelope/0-2 0.00 0.00 ~ (all equal) LineEnvelope/1-2 0.00 0.00 ~ (all equal) LineEnvelope/2-2 0.00 0.00 ~ (all equal) LineEnvelope/3-2 0.00 0.00 ~ (all equal) MarshalWKB/polygon/n=10-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) MarshalWKB/polygon/n=100-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) MarshalWKB/polygon/n=1000-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) MarshalWKB/polygon/n=10000-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) UnmarshalWKB/polygon/n=10-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) UnmarshalWKB/polygon/n=100-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) UnmarshalWKB/polygon/n=1000-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) UnmarshalWKB/polygon/n=10000-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=10-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=100-2 73.0 ± 0% 73.0 ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=1000-2 345 ± 0% 345 ± 0% ~ (all equal) IntersectsLineStringWithLineString/n=10000-2 5.46k ± 0% 5.46k ± 0% ~ (all equal) IntersectsMultiPointWithMultiPoint/n=20-2 1.00 ± 0% 1.00 ± 0% ~ (all equal) IntersectsMultiPointWithMultiPoint/n=200-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) IntersectsMultiPointWithMultiPoint/n=2000-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) IntersectsMultiPointWithMultiPoint/n=20000-2 11.0 ± 0% 11.0 ± 0% ~ (all equal) PolygonSingleRingValidation/n=10-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) PolygonSingleRingValidation/n=100-2 76.0 ± 0% 76.0 ± 0% ~ (all equal) PolygonSingleRingValidation/n=1000-2 348 ± 0% 348 ± 0% ~ (all equal) PolygonSingleRingValidation/n=10000-2 5.47k ± 0% 5.47k ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=4-2 42.0 ± 0% 42.0 ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=36-2 316 ± 0% 316 ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=400-2 3.48k ± 0% 3.48k ± 0% ~ (all equal) PolygonMultipleRingsValidation/n=4096-2 36.2k ± 0% 36.2k ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=10-2 41.0 ± 0% 41.0 ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=100-2 233 ± 0% 233 ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=1000-2 1.05k ± 0% 1.05k ± 0% ~ (all equal) PolygonZigZagRingsValidation/n=10000-2 16.4k ± 0% 16.4k ± 0% ~ (all equal) PolygonAnnulusValidation/n=10-2 22.0 ± 0% 22.0 ± 0% ~ (all equal) PolygonAnnulusValidation/n=100-2 76.0 ± 0% 76.0 ± 0% ~ (all equal) PolygonAnnulusValidation/n=1000-2 1.00k ± 0% 1.00k ± 0% ~ (all equal) PolygonAnnulusValidation/n=10000-2 10.3k ± 0% 10.3k ± 0% ~ (all equal) MultipolygonValidation/n=1-2 8.00 ± 0% 8.00 ± 0% ~ (all equal) MultipolygonValidation/n=4-2 11.0 ± 0% 11.0 ± 0% ~ (all equal) MultipolygonValidation/n=16-2 27.0 ± 0% 27.0 ± 0% ~ (all equal) MultipolygonValidation/n=64-2 91.0 ± 0% 91.0 ± 0% ~ (all equal) MultipolygonValidation/n=256-2 347 ± 0% 347 ± 0% ~ (all equal) MultipolygonValidation/n=1024-2 1.37k ± 0% 1.37k ± 0% ~ (all equal) MultiPolygonTwoCircles/n=10-2 29.0 ± 0% 29.0 ± 0% ~ (all equal) MultiPolygonTwoCircles/n=100-2 157 ± 0% 157 ± 0% ~ (all equal) MultiPolygonTwoCircles/n=1000-2 701 ± 0% 701 ± 0% ~ (all equal) MultiPolygonTwoCircles/n=10000-2 10.9k ± 0% 10.9k ± 0% ~ (all equal) MultiPolygonMultipleTouchingPoints/n=1-2 51.0 ± 0% 51.0 ± 0% ~ (all equal) MultiPolygonMultipleTouchingPoints/n=10-2 298 ± 0% 298 ± 0% ~ (all equal) MultiPolygonMultipleTouchingPoints/n=100-2 2.61k ± 0% 2.61k ± 0% ~ (p=1.000 n=15+15) MultiPolygonMultipleTouchingPoints/n=1000-2 26.7k ± 0% 26.7k ± 0% ~ (p=0.656 n=15+15) WKTParsing/point-2 22.0 ± 0% 22.0 ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=100_swap=false-2 234 ± 0% 234 ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=100_swap=true-2 234 ± 0% 234 ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=1000_swap=false-2 2.10k ± 0% 2.10k ± 0% ~ (all equal) DistancePolygonToPolygonOrdering/n=1000_swap=true-2 2.10k ± 0% 2.10k ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=100_swap=false-2 13.0 ± 0% 13.0 ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=100_swap=true-2 13.0 ± 0% 13.0 ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=1000_swap=false-2 77.0 ± 0% 77.0 ± 0% ~ (all equal) IntersectionPolygonWithPolygonOrdering/n=1000_swap=true-2 77.0 ± 0% 77.0 ± 0% ~ (all equal) MultiLineStringIsSimpleManyLineStrings/n=100-2 371 ± 0% 371 ± 0% ~ (all equal) MultiLineStringIsSimpleManyLineStrings/n=1000-2 3.34k ± 0% 3.34k ± 0% ~ (all equal) ForceCWandForceCCW/0-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/0#01-2 3.00 ± 0% 3.00 ± 0% ~ (all equal) ForceCWandForceCCW/1-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/1#01-2 3.00 ± 0% 3.00 ± 0% ~ (all equal) ForceCWandForceCCW/2-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/2#01-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) ForceCWandForceCCW/3-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/3#01-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) ForceCWandForceCCW/4-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/4#01-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) ForceCWandForceCCW/5-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/5#01-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) ForceCWandForceCCW/6-2 0.00 0.00 ~ (all equal) ForceCWandForceCCW/6#01-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) EnvelopeTransformXY-2 0.00 0.00 ~ (all equal) WKBParse/0-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/1-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/2-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/3-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/4-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) WKBParse/5-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) WKBParse/6-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) WKBParse/7-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) WKBParse/8-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) WKBParse/9-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/10-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/11-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/12-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) WKBParse/13-2 8.00 ± 0% 8.00 ± 0% ~ (all equal) WKBParse/14-2 8.00 ± 0% 8.00 ± 0% ~ (all equal) WKBParse/15-2 8.00 ± 0% 8.00 ± 0% ~ (all equal) WKBParse/16-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) WKBParse/17-2 8.00 ± 0% 8.00 ± 0% ~ (all equal) WKBParse/18-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) WKBParse/19-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) WKBParse/20-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) WKBParse/21-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/22-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/23-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/24-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/25-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/26-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/27-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/28-2 16.0 ± 0% 16.0 ± 0% ~ (all equal) WKBParse/29-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/30-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/31-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/32-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/33-2 9.00 ± 0% 9.00 ± 0% ~ (all equal) WKBParse/34-2 10.0 ± 0% 10.0 ± 0% ~ (all equal) WKBParse/35-2 10.0 ± 0% 10.0 ± 0% ~ (all equal) WKBParse/36-2 10.0 ± 0% 10.0 ± 0% ~ (all equal) WKBParse/37-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) WKBParse/38-2 13.0 ± 0% 13.0 ± 0% ~ (all equal) WKBParse/39-2 13.0 ± 0% 13.0 ± 0% ~ (all equal) WKBParse/40-2 13.0 ± 0% 13.0 ± 0% ~ (all equal) WKBParse/41-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/42-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/43-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/44-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/45-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) WKBParse/46-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) WKBParse/47-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) WKBParse/48-2 12.0 ± 0% 12.0 ± 0% ~ (all equal) WKBParse/49-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/50-2 16.0 ± 0% 16.0 ± 0% ~ (all equal) WKBParse/51-2 16.0 ± 0% 16.0 ± 0% ~ (all equal) WKBParse/52-2 16.0 ± 0% 16.0 ± 0% ~ (all equal) WKBParse/53-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/54-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/55-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/56-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/57-2 25.0 ± 0% 25.0 ± 0% ~ (all equal) WKBParse/58-2 25.0 ± 0% 25.0 ± 0% ~ (all equal) WKBParse/59-2 25.0 ± 0% 25.0 ± 0% ~ (all equal) WKBParse/60-2 26.0 ± 0% 26.0 ± 0% ~ (all equal) WKBParse/61-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/62-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/63-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/64-2 4.00 ± 0% 4.00 ± 0% ~ (all equal) WKBParse/65-2 14.0 ± 0% 14.0 ± 0% ~ (all equal) WKBParse/66-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/67-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) WKBParse/68-2 15.0 ± 0% 15.0 ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/geos goos:linux goarch:arm64 IntersectionWithoutValidation/n=10-2 48.0 ± 0% 48.0 ± 0% ~ (all equal) IntersectionWithoutValidation/n=100-2 48.0 ± 0% 48.0 ± 0% ~ (all equal) IntersectionWithoutValidation/n=1000-2 48.0 ± 0% 48.0 ± 0% ~ (all equal) IntersectionWithoutValidation/n=10000-2 48.0 ± 0% 48.0 ± 0% ~ (all equal) NoOp/n=10-2 33.0 ± 0% 33.0 ± 0% ~ (all equal) NoOp/n=100-2 33.0 ± 0% 33.0 ± 0% ~ (all equal) NoOp/n=1000-2 33.0 ± 0% 33.0 ± 0% ~ (all equal) NoOp/n=10000-2 33.0 ± 0% 33.0 ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/internal/perf goos:linux goarch:arm64 LineStringIsSimpleCircle/n=10-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) LineStringIsSimpleCircle/n=100-2 71.0 ± 0% 71.0 ± 0% ~ (all equal) LineStringIsSimpleCircle/n=1000-2 343 ± 0% 343 ± 0% ~ (all equal) LineStringIsSimpleCircle/n=10000-2 5.46k ± 0% 5.46k ± 0% ~ (all equal) LineStringIsSimpleZigZag/10-2 7.00 ± 0% 7.00 ± 0% ~ (all equal) LineStringIsSimpleZigZag/100-2 71.0 ± 0% 71.0 ± 0% ~ (all equal) LineStringIsSimpleZigZag/1000-2 343 ± 0% 343 ± 0% ~ (all equal) LineStringIsSimpleZigZag/10000-2 5.46k ± 0% 5.46k ± 0% ~ (all equal) SetOperation/n=4/Go_Intersection-2 272 ± 0% 268 ± 0% -1.47% (p=0.000 n=15+15) SetOperation/n=4/Go_Difference-2 276 ± 0% 272 ± 0% -1.45% (p=0.000 n=15+15) SetOperation/n=4/Go_SymmetricDifference-2 374 ± 0% 370 ± 0% -1.07% (p=0.000 n=15+15) SetOperation/n=4/Go_Union-2 283 ± 0% 279 ± 0% -1.41% (p=0.000 n=15+15) SetOperation/n=4/GEOS_Intersection-2 52.0 ± 0% 52.0 ± 0% ~ (all equal) SetOperation/n=4/GEOS_Difference-2 55.0 ± 0% 55.0 ± 0% ~ (all equal) SetOperation/n=4/GEOS_SymmetricDifference-2 146 ± 0% 146 ± 0% ~ (all equal) SetOperation/n=4/GEOS_Union-2 56.0 ± 0% 56.0 ± 0% ~ (all equal) SetOperation/n=8/Go_Intersection-2 288 ± 0% 284 ± 0% -1.30% (p=0.000 n=13+15) SetOperation/n=8/Go_Difference-2 289 ± 0% 285 ± 0% -1.38% (p=0.000 n=12+12) SetOperation/n=8/Go_SymmetricDifference-2 383 ± 0% 379 ± 0% -1.13% (p=0.000 n=15+13) SetOperation/n=8/Go_Union-2 294 ± 0% 290 ± 0% -1.36% (p=0.000 n=12+13) SetOperation/n=8/GEOS_Intersection-2 56.0 ± 0% 56.0 ± 0% ~ (all equal) SetOperation/n=8/GEOS_Difference-2 56.0 ± 0% 56.0 ± 0% ~ (all equal) SetOperation/n=8/GEOS_SymmetricDifference-2 143 ± 0% 143 ± 0% ~ (all equal) SetOperation/n=8/GEOS_Union-2 56.0 ± 0% 56.0 ± 0% ~ (all equal) SetOperation/n=16/Go_Intersection-2 302 ± 0% 296 ± 0% -1.99% (p=0.000 n=15+15) SetOperation/n=16/Go_Difference-2 312 ± 0% 306 ± 0% -1.92% (p=0.000 n=15+15) SetOperation/n=16/Go_SymmetricDifference-2 419 ± 0% 413 ± 0% -1.43% (p=0.000 n=15+15) SetOperation/n=16/Go_Union-2 321 ± 0% 315 ± 0% -1.87% (p=0.000 n=15+15) SetOperation/n=16/GEOS_Intersection-2 56.0 ± 0% 56.0 ± 0% ~ (all equal) SetOperation/n=16/GEOS_Difference-2 64.0 ± 0% 64.0 ± 0% ~ (all equal) SetOperation/n=16/GEOS_SymmetricDifference-2 169 ± 0% 169 ± 0% ~ (all equal) SetOperation/n=16/GEOS_Union-2 68.0 ± 0% 68.0 ± 0% ~ (all equal) SetOperation/n=32/Go_Intersection-2 353 ± 0% 347 ± 0% -1.70% (p=0.000 n=15+15) SetOperation/n=32/Go_Difference-2 359 ± 0% 353 ± 0% -1.67% (p=0.000 n=15+15) SetOperation/n=32/Go_SymmetricDifference-2 491 ± 0% 485 ± 0% -1.22% (p=0.000 n=15+15) SetOperation/n=32/Go_Union-2 364 ± 0% 358 ± 0% -1.65% (p=0.000 n=15+15) SetOperation/n=32/GEOS_Intersection-2 68.0 ± 0% 68.0 ± 0% ~ (all equal) SetOperation/n=32/GEOS_Difference-2 72.0 ± 0% 72.0 ± 0% ~ (all equal) SetOperation/n=32/GEOS_SymmetricDifference-2 189 ± 0% 189 ± 0% ~ (all equal) SetOperation/n=32/GEOS_Union-2 72.0 ± 0% 72.0 ± 0% ~ (all equal) SetOperation/n=64/Go_Intersection-2 394 ± 0% 388 ± 0% -1.52% (p=0.000 n=15+15) SetOperation/n=64/Go_Difference-2 428 ± 0% 422 ± 0% -1.40% (p=0.000 n=15+15) SetOperation/n=64/Go_SymmetricDifference-2 675 ± 0% 669 ± 0% -0.89% (p=0.000 n=14+15) SetOperation/n=64/Go_Union-2 441 ± 0% 435 ± 0% -1.36% (p=0.000 n=15+15) SetOperation/n=64/GEOS_Intersection-2 72.0 ± 0% 72.0 ± 0% ~ (all equal) SetOperation/n=64/GEOS_Difference-2 104 ± 0% 104 ± 0% ~ (all equal) SetOperation/n=64/GEOS_SymmetricDifference-2 335 ± 0% 335 ± 0% ~ (all equal) SetOperation/n=64/GEOS_Union-2 112 ± 0% 112 ± 0% ~ (all equal) SetOperation/n=128/Go_Intersection-2 568 ± 0% 562 ± 0% -1.06% (p=0.000 n=15+15) SetOperation/n=128/Go_Difference-2 594 ± 0% 588 ± 0% -1.01% (p=0.000 n=15+15) SetOperation/n=128/Go_SymmetricDifference-2 920 ± 0% 914 ± 0% -0.65% (p=0.000 n=15+15) SetOperation/n=128/Go_Union-2 599 ± 0% 593 ± 0% -1.00% (p=0.000 n=15+15) SetOperation/n=128/GEOS_Intersection-2 112 ± 0% 112 ± 0% ~ (all equal) SetOperation/n=128/GEOS_Difference-2 136 ± 0% 136 ± 0% ~ (all equal) SetOperation/n=128/GEOS_SymmetricDifference-2 457 ± 0% 457 ± 0% ~ (all equal) SetOperation/n=128/GEOS_Union-2 136 ± 0% 136 ± 0% ~ (all equal) SetOperation/n=256/Go_Intersection-2 727 ± 0% 721 ± 0% -0.83% (p=0.000 n=14+15) SetOperation/n=256/Go_Difference-2 857 ± 0% 851 ± 0% -0.70% (p=0.000 n=15+15) SetOperation/n=256/Go_SymmetricDifference-2 1.58k ± 0% 1.57k ± 0% -0.38% (p=0.000 n=14+14) SetOperation/n=256/Go_Union-2 886 ± 0% 880 ± 0% -0.68% (p=0.000 n=15+15) SetOperation/n=256/GEOS_Intersection-2 136 ± 0% 136 ± 0% ~ (all equal) SetOperation/n=256/GEOS_Difference-2 264 ± 0% 264 ± 0% ~ (all equal) SetOperation/n=256/GEOS_SymmetricDifference-2 969 ± 0% 969 ± 0% ~ (all equal) SetOperation/n=256/GEOS_Union-2 288 ± 0% 288 ± 0% ~ (all equal) SetOperation/n=512/Go_Intersection-2 1.40k ± 0% 1.39k ± 0% -0.43% (p=0.000 n=13+15) SetOperation/n=512/Go_Difference-2 1.50k ± 0% 1.50k ± 0% -0.38% (p=0.000 n=13+15) SetOperation/n=512/Go_SymmetricDifference-2 2.62k ± 0% 2.61k ± 0% -0.23% (p=0.000 n=14+14) SetOperation/n=512/Go_Union-2 1.51k ± 0% 1.50k ± 0% -0.40% (p=0.000 n=12+14) SetOperation/n=512/GEOS_Intersection-2 288 ± 0% 288 ± 0% ~ (all equal) SetOperation/n=512/GEOS_Difference-2 392 ± 0% 392 ± 0% ~ (all equal) SetOperation/n=512/GEOS_SymmetricDifference-2 1.48k ± 0% 1.48k ± 0% ~ (all equal) SetOperation/n=512/GEOS_Union-2 392 ± 0% 392 ± 0% ~ (all equal) SetOperation/n=1024/Go_Intersection-2 2.02k ± 0% 2.02k ± 0% -0.30% (p=0.000 n=14+14) SetOperation/n=1024/Go_Difference-2 2.54k ± 0% 2.53k ± 0% -0.24% (p=0.000 n=14+14) SetOperation/n=1024/Go_SymmetricDifference-2 5.18k ± 0% 5.18k ± 0% -0.12% (p=0.000 n=13+14) SetOperation/n=1024/Go_Union-2 2.63k ± 0% 2.63k ± 0% -0.23% (p=0.000 n=13+14) SetOperation/n=1024/GEOS_Intersection-2 392 ± 0% 392 ± 0% ~ (all equal) SetOperation/n=1024/GEOS_Difference-2 904 ± 0% 904 ± 0% ~ (all equal) SetOperation/n=1024/GEOS_SymmetricDifference-2 3.52k ± 0% 3.52k ± 0% ~ (all equal) SetOperation/n=1024/GEOS_Union-2 992 ± 0% 992 ± 0% ~ (all equal) SetOperation/n=2048/Go_Intersection-2 4.68k ± 0% 4.68k ± 0% -0.13% (p=0.000 n=15+15) SetOperation/n=2048/Go_Difference-2 5.11k ± 0% 5.10k ± 0% -0.12% (p=0.000 n=15+15) SetOperation/n=2048/Go_SymmetricDifference-2 9.29k ± 0% 9.28k ± 0% -0.06% (p=0.000 n=15+15) SetOperation/n=2048/Go_Union-2 5.11k ± 0% 5.11k ± 0% -0.12% (p=0.000 n=14+14) SetOperation/n=2048/GEOS_Intersection-2 992 ± 0% 992 ± 0% ~ (all equal) SetOperation/n=2048/GEOS_Difference-2 1.42k ± 0% 1.42k ± 0% ~ (all equal) SetOperation/n=2048/GEOS_SymmetricDifference-2 5.58k ± 0% 5.58k ± 0% ~ (all equal) SetOperation/n=2048/GEOS_Union-2 1.42k ± 0% 1.42k ± 0% ~ (all equal) SetOperation/n=4096/Go_Intersection-2 7.17k ± 0% 7.16k ± 0% -0.08% (p=0.000 n=14+14) SetOperation/n=4096/Go_Difference-2 9.21k ± 0% 9.21k ± 0% -0.07% (p=0.000 n=15+15) SetOperation/n=4096/Go_SymmetricDifference-2 19.5k ± 0% 19.5k ± 0% -0.03% (p=0.000 n=14+14) SetOperation/n=4096/Go_Union-2 9.56k ± 0% 9.56k ± 0% -0.06% (p=0.000 n=15+15) SetOperation/n=4096/GEOS_Intersection-2 1.42k ± 0% 1.42k ± 0% ~ (all equal) SetOperation/n=4096/GEOS_Difference-2 3.46k ± 0% 3.46k ± 0% ~ (all equal) SetOperation/n=4096/GEOS_SymmetricDifference-2 13.8k ± 0% 13.8k ± 0% ~ (all equal) SetOperation/n=4096/GEOS_Union-2 3.81k ± 0% 3.81k ± 0% ~ (all equal) SetOperation/n=8192/Go_Intersection-2 17.8k ± 0% 17.8k ± 0% -0.03% (p=0.000 n=14+14) SetOperation/n=8192/Go_Difference-2 19.5k ± 0% 19.5k ± 0% -0.03% (p=0.000 n=13+12) SetOperation/n=8192/Go_SymmetricDifference-2 35.9k ± 0% 35.9k ± 0% -0.02% (p=0.000 n=13+12) SetOperation/n=8192/Go_Union-2 19.5k ± 0% 19.5k ± 0% -0.03% (p=0.000 n=13+13) SetOperation/n=8192/GEOS_Intersection-2 3.81k ± 0% 3.81k ± 0% ~ (all equal) SetOperation/n=8192/GEOS_Difference-2 5.51k ± 0% 5.51k ± 0% ~ (all equal) SetOperation/n=8192/GEOS_SymmetricDifference-2 22.0k ± 0% 22.0k ± 0% ~ (all equal) SetOperation/n=8192/GEOS_Union-2 5.51k ± 0% 5.51k ± 0% ~ (all equal) SetOperation/n=16384/Go_Intersection-2 27.7k ± 0% 27.7k ± 0% -0.02% (p=0.000 n=12+12) SetOperation/n=16384/Go_Difference-2 35.9k ± 0% 35.9k ± 0% -0.02% (p=0.000 n=13+13) SetOperation/n=16384/Go_SymmetricDifference-2 76.9k ± 0% 76.9k ± 0% -0.01% (p=0.000 n=15+15) SetOperation/n=16384/Go_Union-2 37.2k ± 0% 37.2k ± 0% -0.02% (p=0.000 n=15+15) SetOperation/n=16384/GEOS_Intersection-2 5.51k ± 0% 5.51k ± 0% ~ (all equal) SetOperation/n=16384/GEOS_Difference-2 13.7k ± 0% 13.7k ± 0% ~ (all equal) SetOperation/n=16384/GEOS_SymmetricDifference-2 54.7k ± 0% 54.7k ± 0% ~ (all equal) SetOperation/n=16384/GEOS_Union-2 15.1k ± 0% 15.1k ± 0% ~ (all equal) pkg:github.com/peterstace/simplefeatures/rtree goos:linux goarch:arm64 Delete/n=100-2 65.0 ± 0% 65.0 ± 0% ~ (all equal) Delete/n=1000-2 480 ± 0% 480 ± 0% ~ (all equal) Delete/n=10000-2 7.62k ± 0% 7.62k ± 0% ~ (all equal) Bulk/n=10-2 6.00 ± 0% 6.00 ± 0% ~ (all equal) Bulk/n=100-2 70.0 ± 0% 70.0 ± 0% ~ (all equal) Bulk/n=1000-2 342 ± 0% 342 ± 0% ~ (all equal) Bulk/n=10000-2 5.46k ± 0% 5.46k ± 0% ~ (all equal) Bulk/n=100000-2 71.0k ± 0% 71.0k ± 0% ~ (all equal) Insert/n=10-2 5.00 ± 0% 5.00 ± 0% ~ (all equal) Insert/n=100-2 47.0 ± 0% 47.0 ± 0% ~ (all equal) Insert/n=1000-2 457 ± 0% 457 ± 0% ~ (all equal) Insert/n=10000-2 4.65k ± 0% 4.65k ± 0% ~ (all equal) Insert/n=100000-2 46.8k ± 0% 46.8k ± 0% ~ (all equal) RangeSearch/n=10-2 0.00 0.00 ~ (all equal) RangeSearch/n=100-2 0.00 0.00 ~ (all equal) RangeSearch/n=1000-2 0.00 0.00 ~ (all equal) RangeSearch/n=10000-2 0.00 0.00 ~ (all equal) RangeSearch/n=100000-2 0.00 0.00 ~ (all equal) ```
peterstace commented 1 year ago

Thanks for reviewing!