Closed paulmach closed 2 years ago
From the included readme changes
If GeoJSON encoding/decoding performance is critical consider using a third party replacement of "encoding/json" like github.com/json-iterator/go
This can be enabled with something like this:
import ( jsoniter "github.com/json-iterator/go" "github.com/paulmach/orb" ) var c = jsoniter.Config{ EscapeHTML: true, SortMapKeys: false, ValidateJsonRawMessage: false, MarshalFloatWith6Digits: true, }.Froze() CustomJSONMarshaler = c CustomJSONUnmarshaler = c
The above change can have dramatic performance implications, see the benchmarks below on a 100k feature collection file:
benchmark old ns/op new ns/op delta BenchmarkFeatureMarshalJSON-12 2694543 733480 -72.78% BenchmarkFeatureUnmarshalJSON-12 5383825 2738183 -49.14% BenchmarkGeometryMarshalJSON-12 210107 62789 -70.12% BenchmarkGeometryUnmarshalJSON-12 691472 144689 -79.08% benchmark old allocs new allocs delta BenchmarkFeatureMarshalJSON-12 7818 2316 -70.38% BenchmarkFeatureUnmarshalJSON-12 23047 31946 +38.61% BenchmarkGeometryMarshalJSON-12 2 3 +50.00% BenchmarkGeometryUnmarshalJSON-12 2042 18 -99.12% benchmark old bytes new bytes delta BenchmarkFeatureMarshalJSON-12 794088 490251 -38.26% BenchmarkFeatureUnmarshalJSON-12 766354 1068497 +39.43% BenchmarkGeometryMarshalJSON-12 24787 18650 -24.76% BenchmarkGeometryUnmarshalJSON-12 79784 51374 -35.61%
From the included readme changes
If GeoJSON encoding/decoding performance is critical consider using a third party replacement of "encoding/json" like github.com/json-iterator/go
This can be enabled with something like this:
The above change can have dramatic performance implications, see the benchmarks below on a 100k feature collection file: