# README
Benchmark Reports
This report shows the performance difference between Simple Feature's native set operations (pure Go) and the corresponding GEOS set operations.
To re-run the reports, use the run.sh
script (it generates the markdown
tables below).
The source code for the benchmarks below is here. The benchmarks
create two regular polygons, each with n
sides (where n
is the input size
in the tables below). The polygons partially overlap with each other. The set
operation on the two regular polygons is what is actually timed.
Operation: Intersection
Input Size | Simple Features | GEOS | Ratio |
---|---|---|---|
22 | 39.2µs | 46.7µs | 0.8 |
23 | 48.1µs | 54.3µs | 0.9 |
24 | 65.2µs | 59.5µs | 1.1 |
25 | 113µs | 72.1µs | 1.6 |
26 | 190µs | 94.9µs | 2.0 |
27 | 354µs | 144µs | 2.5 |
28 | 647µs | 215µs | 3.0 |
29 | 1.28ms | 385µs | 3.3 |
210 | 2.47ms | 718µs | 3.4 |
211 | 5.36ms | 1.46ms | 3.7 |
212 | 11.1ms | 2.66ms | 4.2 |
213 | 22.1ms | 5.73ms | 3.9 |
214 | 44.7ms | 11.6ms | 3.9 |
Operation: Union
Input Size | Simple Features | GEOS | Ratio |
---|---|---|---|
22 | 40.8µs | 49.6µs | 0.8 |
23 | 50.2µs | 55.6µs | 0.9 |
24 | 72.3µs | 67.5µs | 1.1 |
25 | 122µs | 86µs | 1.4 |
26 | 215µs | 127µs | 1.7 |
27 | 390µs | 190µs | 2.1 |
28 | 729µs | 318µs | 2.3 |
29 | 1.42ms | 574µs | 2.5 |
210 | 2.83ms | 1.19ms | 2.4 |
211 | 5.99ms | 2.19ms | 2.7 |
212 | 12.7ms | 4.7ms | 2.7 |
213 | 25.9ms | 9.42ms | 2.7 |
214 | 55ms | 20.3ms | 2.7 |
Operation: Difference
Input Size | Simple Features | GEOS | Ratio |
---|---|---|---|
22 | 40.1µs | 48.9µs | 0.8 |
23 | 48µs | 55.6µs | 0.9 |
24 | 68.7µs | 64.8µs | 1.1 |
25 | 117µs | 79.9µs | 1.5 |
26 | 203µs | 116µs | 1.7 |
27 | 370µs | 172µs | 2.1 |
28 | 691µs | 281µs | 2.5 |
29 | 1.37ms | 512µs | 2.7 |
210 | 2.66ms | 1.03ms | 2.6 |
211 | 5.63ms | 1.85ms | 3.0 |
212 | 12ms | 4.02ms | 3.0 |
213 | 25.1ms | 8.09ms | 3.1 |
214 | 53.2ms | 17.2ms | 3.1 |
Operation: SymmetricDifference
Input Size | Simple Features | GEOS | Ratio |
---|---|---|---|
22 | 51.5µs | 68.2µs | 0.8 |
23 | 63.9µs | 79.4µs | 0.8 |
24 | 98.8µs | 102µs | 1.0 |
25 | 161µs | 137µs | 1.2 |
26 | 286µs | 210µs | 1.4 |
27 | 512µs | 335µs | 1.5 |
28 | 1ms | 618µs | 1.6 |
29 | 1.91ms | 1.15ms | 1.7 |
210 | 3.93ms | 2.32ms | 1.7 |
211 | 8.06ms | 4.46ms | 1.8 |
212 | 17.1ms | 9.86ms | 1.7 |
213 | 34.1ms | 19.5ms | 1.7 |
214 | 71ms | 38.3ms | 1.9 |