- Notifications
You must be signed in to change notification settings - Fork2
Faster substitution of tidwall/gjson
License
MIT, Apache-2.0 licenses found
Licenses found
cloudwego/gjson
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a wrapper lib ofgjson, which is accelerated bysonic's algorithm.
It's usually faster than original one, especially for large JSON. (see codeshere)
goversion: 1.22.0goos: linuxgoarch: amd64cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz │ origin.out │ target.out │ │ sec/op │ sec/op vs base │GetComplexPath/small-32 3.000µ ± 6% 2.591µ ± 6% -13.65% (p=0.000 n=10)GetComplexPath/medium-32 24.855µ ± 5% 6.464µ ± 8% -74.00% (p=0.000 n=10)GetComplexPath/large-32 1309.1µ ± 3% 270.0µ ± 8% -79.37% (p=0.000 n=10)GetSimplePath/small-32 702.1n ± 11% 634.3n ± 5% -9.66% (p=0.000 n=10)GetSimplePath/medium-32 9.558µ ± 3% 1.744µ ± 4% -81.76% (p=0.000 n=10)GetSimplePath/Large-32 342.03µ ± 14% 37.83µ ± 5% -88.94% (p=0.000 n=10)geomean 24.64µ 7.576µ -69.26% │ origin.out │ target.out │ │ B/op │ B/op vs base │GetComplexPath/small-32 104.0 ± 0% 104.0 ± 0% ~ (p=1.000 n=10) ¹GetComplexPath/medium-32 16.00 ± 0% 16.00 ± 0% ~ (p=1.000 n=10) ¹GetComplexPath/large-32 16.00 ± 0% 16.00 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/small-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/medium-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/Large-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹geomean ² +0.00% ²¹ all samples are equal² summaries must be >0 to compute geomean │ origin.out │ target.out │ │ allocs/op │ allocs/op vs base │GetComplexPath/small-32 6.000 ± 0% 6.000 ± 0% ~ (p=1.000 n=10) ¹GetComplexPath/medium-32 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹GetComplexPath/large-32 2.000 ± 0% 2.000 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/small-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/medium-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹GetSimplePath/Large-32 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹geomean ² +0.00%
This option is used to cache parsed simple paths and search JSON path all-in-once in C funtions, to reduce the overhead of c-go interaction. By default, this option is disabled, because it will and consumes a little more memory than default. You can enable it by set environment variableGJSON_FAST_PATH=1
.
By default, Gjson doesn't use the SIMD algorithm when decoding a string and does not validate UTF8 either, thus its string-value APIs' behaviors are slow and different fromencoding/json
. You can change the behaviors by setting the environment variable below:
GJSON_FAST_STRING=1
:SIMD-implemented
string parsing. The string-value APIs' behaviors will be the same as sonic/decoder's default behavior, with 2~3X times the speed of default string-parsing.GJSON_FAST_STRING=2
,SIMD-implemented
string parsing, and UTF-8 validating. String-value APIs' behaviors will be totally same withencoding/json.Decode
and also faster than the default.
This is a benchmark on the above options (seecodes):
goversion: 1.22.0goos: linuxgoarch: amd64pkg: github.com/tidwall/gjson/testdatacpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHzBenchmarkFastPath/normal/small-32 741.1 ns/op 0 B/op 0 allocs/opBenchmarkFastPath/normal/medium-32 1846 ns/op 0 B/op 0 allocs/opBenchmarkFastPath/normal/Large-32 38675 ns/op 0 B/op 0 allocs/opBenchmarkFastPath/fast-path/small-32 364.4 ns/op 0 B/op 0 allocs/opBenchmarkFastPath/fast-path/medium-32 1662 ns/op 0 B/op 0 allocs/opBenchmarkFastPath/fast-path/Large-32 38976 ns/op 0 B/op 0 allocs/opBenchmarkParseString/normal/small-32 401.8 ns/op 192 B/op 2 allocs/opBenchmarkParseString/normal/medium-32 4600 ns/op 2560 B/op 2 allocs/opBenchmarkParseString/normal/large-32 63202 ns/op 27904 B/op 2 allocs/opBenchmarkParseString/fast-string/small-32 219.7 ns/op 96 B/op 1 allocs/opBenchmarkParseString/fast-string/medium-32 2076 ns/op 1408 B/op 1 allocs/opBenchmarkParseString/fast-string/large-32 15814 ns/op 14336 B/op 1 allocs/opBenchmarkParseString/validate-string/small-32 231.6 ns/op 96 B/op 1 allocs/opBenchmarkParseString/validate-string/medium-32 2116 ns/op 1408 B/op 1 allocs/opBenchmarkParseString/validate-string/large-32 16779 ns/op 14336 B/op 1 allocs/op
About
Faster substitution of tidwall/gjson
Topics
Resources
License
MIT, Apache-2.0 licenses found
Licenses found
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.