bytedance / sonic

A blazingly fast JSON serializing & deserializing library
Apache License 2.0
6.54k stars 322 forks source link

feat: support aarch64 #645

Closed liuq19 closed 1 day ago

liuq19 commented 1 month ago

Rewrite the decoder and encoder to support aarch64. Not fallback into encoding/json in aarch64.

Performance

compare with jit decoder/encoder: Unmarshal/Interface: about 1.7x Unmarshal/Concrete: 1.0x Marshal/Interface: 0.7x Marshal/Concrete: 0.6x

For more details pls see the data in follow comments.

Compatibility

there are no break changes here.

codecov-commenter commented 1 month ago

:warning: Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

Attention: Patch coverage is 20.52072% with 2839 lines in your changes missing coverage. Please review.

Project coverage is 52.45%. Comparing base (99f5b35) to head (c71218e). Report is 17 commits behind head on main.

Files Patch % Lines
internal/decoder/optdec/node.go 0.00% 837 Missing :warning:
internal/decoder/optdec/compiler.go 0.00% 272 Missing :warning:
internal/decoder/optdec/map.go 0.00% 239 Missing :warning:
internal/encoder/vm/vm.go 29.00% 181 Missing and 5 partials :warning:
internal/encoder/compiler.go 60.51% 168 Missing and 16 partials :warning:
internal/decoder/optdec/stringopts.go 0.00% 177 Missing :warning:
internal/decoder/optdec/functor.go 0.00% 129 Missing :warning:
internal/decoder/optdec/slice.go 0.00% 105 Missing :warning:
internal/encoder/alg/spec.go 0.00% 101 Missing :warning:
internal/decoder/optdec/compile_struct.go 0.00% 96 Missing :warning:
... and 21 more

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #645 +/- ## =========================================== - Coverage 77.56% 52.45% -25.11% =========================================== Files 83 175 +92 Lines 11542 11374 -168 =========================================== - Hits 8952 5966 -2986 - Misses 2192 5085 +2893 + Partials 398 323 -75 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

liuq19 commented 1 week ago

Benchmark Data for Decoder:

./scripts/bench2.py -c " SONIC_USE_OPTDEC=1 SONIC_USE_FASTMAP=1 SONIC_NO_ASYNC_GC=1 go test -benchmem -run=none -bench=BenchmarkUnmarshalInterface/.*_Sonic$ -count=5 ./generic_test"

benchstat /tmp/tmp66cqvh2s.main.txt /tmp/tmp2qy25w08.target.txt
goos: linux
goarch: amd64
pkg: github.com/bytedance/sonic/generic_test
cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
                                          │ /tmp/tmp66cqvh2s.main.txt │      /tmp/tmp2qy25w08.target.txt      │
                                          │          sec/op           │    sec/op     vs base                 │
UnmarshalInterface/CanadaGeometry_Sonic-8                3.314m ± ∞ ¹   1.339m ± ∞ ¹  -59.59% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                   9.342m ± ∞ ¹   5.433m ± ∞ ¹  -41.84% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                  18.14m ± ∞ ¹
UnmarshalInterface/StringEscaped_Sonic-8                105.95µ ± ∞ ¹   86.87µ ± ∞ ¹  -18.01% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                 25.55µ ± ∞ ¹   16.59µ ± ∞ ¹  -35.05% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                   12.02m ± ∞ ¹
UnmarshalInterface/TwitterStatus_Sonic-8                 3.688m ± ∞ ¹   2.069m ± ∞ ¹  -43.90% (p=0.008 n=5)
geomean                                                  1.825m         464.8µ        -41.21%               ²
¹ need >= 6 samples for confidence interval at level 0.95
² benchmark set differs from baseline; geomeans may not be comparable

                                          │ /tmp/tmp66cqvh2s.main.txt │       /tmp/tmp2qy25w08.target.txt        │
                                          │            B/s            │      B/s        vs base                  │
UnmarshalInterface/CanadaGeometry_Sonic-8               77.83Mi ± ∞ ¹   192.60Mi ± ∞ ¹  +147.47% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                  176.3Mi ± ∞ ¹    303.2Mi ± ∞ ¹   +71.96% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                 102.0Mi ± ∞ ¹
UnmarshalInterface/StringEscaped_Sonic-8                378.6Mi ± ∞ ¹    461.8Mi ± ∞ ¹   +21.96% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                676.6Mi ± ∞ ¹   1041.7Mi ± ∞ ¹   +53.97% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                  159.3Mi ± ∞ ¹
UnmarshalInterface/TwitterStatus_Sonic-8                163.3Mi ± ∞ ¹    291.1Mi ± ∞ ¹   +78.24% (p=0.008 n=5)
geomean                                                 191.2Mi          382.4Mi         +70.11%               ²
¹ need >= 6 samples for confidence interval at level 0.95
² benchmark set differs from baseline; geomeans may not be comparable

                                          │ /tmp/tmp66cqvh2s.main.txt │      /tmp/tmp2qy25w08.target.txt       │
                                          │           B/op            │     B/op       vs base                 │
UnmarshalInterface/CanadaGeometry_Sonic-8              2729.4Ki ± ∞ ¹   916.3Ki ± ∞ ¹  -66.43% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                  8.247Mi ± ∞ ¹   5.897Mi ± ∞ ¹  -28.50% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                 10.49Mi ± ∞ ¹
UnmarshalInterface/StringEscaped_Sonic-8               102.05Ki ± ∞ ¹   77.26Ki ± ∞ ¹  -24.29% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                29.19Ki ± ∞ ¹   28.44Ki ± ∞ ¹   -2.58% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                  9.055Mi ± ∞ ¹
UnmarshalInterface/TwitterStatus_Sonic-8                2.486Mi ± ∞ ¹   1.694Mi ± ∞ ¹  -31.86% (p=0.008 n=5)
geomean                                                 1.469Mi         462.2Ki        -34.49%               ²
¹ need >= 6 samples for confidence interval at level 0.95
² benchmark set differs from baseline; geomeans may not be comparable

                                          │ /tmp/tmp66cqvh2s.main.txt │     /tmp/tmp2qy25w08.target.txt      │
                                          │         allocs/op         │  allocs/op   vs base                 │
UnmarshalInterface/CanadaGeometry_Sonic-8              29678.00 ± ∞ ¹   12.00 ± ∞ ¹  -99.96% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                  58178.0 ± ∞ ¹   294.0 ± ∞ ¹  -99.49% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                  128.3k ± ∞ ¹
UnmarshalInterface/StringEscaped_Sonic-8                  132.0 ± ∞ ¹   131.0 ± ∞ ¹   -0.76% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                  72.00 ± ∞ ¹   13.00 ± ∞ ¹  -81.94% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                   67.62k ± ∞ ¹
UnmarshalInterface/TwitterStatus_Sonic-8                12137.0 ± ∞ ¹   804.0 ± ∞ ¹  -93.38% (p=0.008 n=5)
geomean                                                  7.782k         86.46        -97.00%               ²

./scripts/bench2.py -c " SONIC_USE_OPTDEC=1 SONIC_USE_FASTMAP=1 SONIC_NO_ASYNC_GC=1 go test -run=none -benchmem -bench=BenchmarkUnmarshalConcrete/.*_Sonic$ -count=5 ./generic_test"

benchstat /tmp/tmpbi8j8xgu.main.txt /tmp/tmpro_lyjq6.target.txt
goos: linux
goarch: amd64
pkg: github.com/bytedance/sonic/generic_test
cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
                                         │ /tmp/tmpbi8j8xgu.main.txt │     /tmp/tmpro_lyjq6.target.txt      │
                                         │          sec/op           │    sec/op      vs base               │
UnmarshalConcrete/CanadaGeometry_Sonic-8                1.079m ± ∞ ¹    1.088m ± ∞ ¹        ~ (p=0.548 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-8                   3.622m ± ∞ ¹    4.146m ± ∞ ¹  +14.47% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-8                  8.401m ± ∞ ¹    9.448m ± ∞ ¹  +12.46% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-8                 90.10µ ± ∞ ¹    76.48µ ± ∞ ¹  -15.11% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-8                 9.971µ ± ∞ ¹   10.865µ ± ∞ ¹   +8.97% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-8                   7.598m ± ∞ ¹    9.473m ± ∞ ¹  +24.68% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-8                 1.563m ± ∞ ¹    1.368m ± ∞ ¹  -12.47% (p=0.008 n=5)
geomean                                                 860.8µ          894.7µ         +3.94%
¹ need >= 6 samples for confidence interval at level 0.95

                                         │ /tmp/tmpbi8j8xgu.main.txt │     /tmp/tmpro_lyjq6.target.txt      │
                                         │            B/s            │      B/s       vs base               │
UnmarshalConcrete/CanadaGeometry_Sonic-8               239.1Mi ± ∞ ¹   236.9Mi ± ∞ ¹        ~ (p=0.548 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-8                  454.8Mi ± ∞ ¹   397.3Mi ± ∞ ¹  -12.64% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-8                 220.3Mi ± ∞ ¹   195.9Mi ± ∞ ¹  -11.08% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-8                445.2Mi ± ∞ ¹   524.5Mi ± ∞ ¹  +17.80% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-8                1.693Gi ± ∞ ¹   1.554Gi ± ∞ ¹   -8.23% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-8                  252.1Mi ± ∞ ¹   202.2Mi ± ∞ ¹  -19.79% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-8                385.4Mi ± ∞ ¹   440.3Mi ± ∞ ¹  +14.24% (p=0.008 n=5)
geomean                                                405.3Mi         389.9Mi         -3.80%
¹ need >= 6 samples for confidence interval at level 0.95

                                         │ /tmp/tmpbi8j8xgu.main.txt │      /tmp/tmpro_lyjq6.target.txt       │
                                         │           B/op            │      B/op       vs base                │
UnmarshalConcrete/CanadaGeometry_Sonic-8               605.7Ki ± ∞ ¹    417.4Ki ± ∞ ¹   -31.08% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-8                  2.564Mi ± ∞ ¹    2.521Mi ± ∞ ¹    -1.66% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-8                 4.652Mi ± ∞ ¹   18.113Mi ± ∞ ¹  +289.35% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-8                92.35Ki ± ∞ ¹    68.18Ki ± ∞ ¹   -26.18% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-8                19.50Ki ± ∞ ¹    20.32Ki ± ∞ ¹    +4.18% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-8                  4.921Mi ± ∞ ¹   20.088Mi ± ∞ ¹  +308.18% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-8               1038.5Ki ± ∞ ¹    900.0Ki ± ∞ ¹   -13.34% (p=0.008 n=5)
geomean                                                685.9Ki          908.9Ki         +32.52%
¹ need >= 6 samples for confidence interval at level 0.95

                                         │ /tmp/tmpbi8j8xgu.main.txt │      /tmp/tmpro_lyjq6.target.txt      │
                                         │         allocs/op         │   allocs/op    vs base                │
UnmarshalConcrete/CanadaGeometry_Sonic-8                1147.0 ± ∞ ¹     968.0 ± ∞ ¹   -15.61% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-8                   5.355k ± ∞ ¹   12.708k ± ∞ ¹  +137.31% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-8                  1.754k ± ∞ ¹   13.512k ± ∞ ¹  +670.35% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-8                 123.00 ± ∞ ¹     64.00 ± ∞ ¹   -47.97% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-8                  5.000 ± ∞ ¹     6.000 ± ∞ ¹   +20.00% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-8                   7.085k ± ∞ ¹   13.681k ± ∞ ¹   +93.10% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-8                  814.0 ± ∞ ¹    1848.0 ± ∞ ¹  +127.03% (p=0.008 n=5)
geomean                                                  627.3          1.071k         +70.70%                                             6
liuq19 commented 1 week ago

./scripts/bench2.py -c " SONIC_USE_ENCODE_VM=1 SONIC_NO_ASYNC_GC=1 go test -run=none -benchmem -bench=BenchmarkMarshalInterface/.*_Sonic$ -count=5 ./generic_test"

cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
                                        │ /tmp/tmp75m682su.main.txt │     /tmp/tmpdvjvf9hh.target.txt      │
                                        │          sec/op           │    sec/op      vs base               │
MarshalInterface/CanadaGeometry_Sonic-8                1.259m ± ∞ ¹    1.814m ± ∞ ¹  +44.09% (p=0.008 n=5)
MarshalInterface/CitmCatalog_Sonic-8                   3.362m ± ∞ ¹    5.383m ± ∞ ¹  +60.10% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-8                  9.720m ± ∞ ¹   14.808m ± ∞ ¹  +52.34% (p=0.008 n=5)
MarshalInterface/StringEscaped_Sonic-8                 10.95µ ± ∞ ¹    16.19µ ± ∞ ¹  +47.92% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-8                 11.04µ ± ∞ ¹    16.51µ ± ∞ ¹  +49.54% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-8                   6.981m ± ∞ ¹    9.530m ± ∞ ¹  +36.51% (p=0.008 n=5)
MarshalInterface/TwitterStatus_Sonic-8                 1.568m ± ∞ ¹    2.281m ± ∞ ¹  +45.42% (p=0.008 n=5)
geomean                                                659.8µ          975.5µ        +47.83%
¹ need >= 6 samples for confidence interval at level 0.95

                                        │ /tmp/tmp75m682su.main.txt │     /tmp/tmpdvjvf9hh.target.txt      │
                                        │            B/s            │      B/s       vs base               │
MarshalInterface/CanadaGeometry_Sonic-8               204.8Mi ± ∞ ¹   142.2Mi ± ∞ ¹  -30.60% (p=0.008 n=5)
MarshalInterface/CitmCatalog_Sonic-8                  489.9Mi ± ∞ ¹   306.0Mi ± ∞ ¹  -37.54% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-8                 190.4Mi ± ∞ ¹   125.0Mi ± ∞ ¹  -34.36% (p=0.008 n=5)
MarshalInterface/StringEscaped_Sonic-8                3.578Gi ± ∞ ¹   2.419Gi ± ∞ ¹  -32.39% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-8                1.529Gi ± ∞ ¹   1.022Gi ± ∞ ¹  -33.13% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-8                  274.4Mi ± ∞ ¹   201.0Mi ± ∞ ¹  -26.75% (p=0.008 n=5)
MarshalInterface/TwitterStatus_Sonic-8                384.0Mi ± ∞ ¹   264.1Mi ± ∞ ¹  -31.23% (p=0.008 n=5)
geomean                                               528.7Mi         357.6Mi        -32.36%
¹ need >= 6 samples for confidence interval at level 0.95

                                        │ /tmp/tmp75m682su.main.txt │     /tmp/tmpdvjvf9hh.target.txt     │
                                        │           B/op            │     B/op       vs base              │
MarshalInterface/CanadaGeometry_Sonic-8               273.2Ki ± ∞ ¹   272.0Ki ± ∞ ¹  -0.41% (p=0.032 n=5)
MarshalInterface/CitmCatalog_Sonic-8                  496.9Ki ± ∞ ¹   496.1Ki ± ∞ ¹  -0.17% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-8                 1.857Mi ± ∞ ¹   1.858Mi ± ∞ ¹       ~ (p=0.548 n=5)
MarshalInterface/StringEscaped_Sonic-8                18.13Ki ± ∞ ¹   18.07Ki ± ∞ ¹  -0.31% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-8                18.12Ki ± ∞ ¹   18.07Ki ± ∞ ¹  -0.31% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-8                  1.097Mi ± ∞ ¹   1.097Mi ± ∞ ¹       ~ (p=0.222 n=5)
MarshalInterface/TwitterStatus_Sonic-8                459.9Ki ± ∞ ¹   456.1Ki ± ∞ ¹  -0.84% (p=0.008 n=5)
geomean                                               238.4Ki         237.7Ki        -0.30%
¹ need >= 6 samples for confidence interval at level 0.95

                                        │ /tmp/tmp75m682su.main.txt │    /tmp/tmpdvjvf9hh.target.txt     │
                                        │         allocs/op         │  allocs/op   vs base               │
MarshalInterface/CanadaGeometry_Sonic-8                 4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/CitmCatalog_Sonic-8                    4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-8                   4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/StringEscaped_Sonic-8                  4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-8                  4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-8                    4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalInterface/TwitterStatus_Sonic-8                  4.000 ± ∞ ¹   2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
geomean                                                 4.000         2.000        -50.00%
¹ need >= 6 samples for confidence interval at level 0.95

./scripts/bench2.py -c " SONIC_USE_ENCODE_VM=1 SONIC_NO_ASYNC_GC=1 go test -run=none -benchmem -bench=BenchmarkMarshalConcrete/.*_Sonic$ -count=5 ./generic_test"

goos: linux
goarch: amd64
pkg: github.com/bytedance/sonic/generic_test
cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
                                       │ /tmp/tmpenxj1usu.main.txt │      /tmp/tmpwzh_86iu.target.txt      │
                                       │          sec/op           │    sec/op      vs base                │
MarshalConcrete/CanadaGeometry_Sonic-8                993.4µ ± ∞ ¹   1222.8µ ± ∞ ¹   +23.09% (p=0.008 n=5)
MarshalConcrete/CitmCatalog_Sonic-8                   715.0µ ± ∞ ¹   1687.9µ ± ∞ ¹  +136.08% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-8                  3.040m ± ∞ ¹    6.144m ± ∞ ¹  +102.10% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-8                 7.193µ ± ∞ ¹   11.245µ ± ∞ ¹   +56.33% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-8                 7.008µ ± ∞ ¹   10.962µ ± ∞ ¹   +56.42% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-8                   7.928m ± ∞ ¹   13.469m ± ∞ ¹   +69.89% (p=0.008 n=5)
MarshalConcrete/TwitterStatus_Sonic-8                 367.6µ ± ∞ ¹    867.1µ ± ∞ ¹  +135.88% (p=0.008 n=5)
geomean                                               316.4µ          564.5µ         +78.42%
¹ need >= 6 samples for confidence interval at level 0.95

                                       │ /tmp/tmpenxj1usu.main.txt │     /tmp/tmpwzh_86iu.target.txt      │
                                       │            B/s            │      B/s       vs base               │
MarshalConcrete/CanadaGeometry_Sonic-8               259.6Mi ± ∞ ¹   210.9Mi ± ∞ ¹  -18.76% (p=0.008 n=5)
MarshalConcrete/CitmCatalog_Sonic-8                 2303.9Mi ± ∞ ¹   975.9Mi ± ∞ ¹  -57.64% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-8                 608.7Mi ± ∞ ¹   301.2Mi ± ∞ ¹  -50.52% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-8                5.446Gi ± ∞ ¹   3.484Gi ± ∞ ¹  -36.03% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-8                2.409Gi ± ∞ ¹   1.540Gi ± ∞ ¹  -36.07% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-8                  241.6Mi ± ∞ ¹   142.2Mi ± ∞ ¹  -41.14% (p=0.008 n=5)
MarshalConcrete/TwitterStatus_Sonic-8               1638.4Mi ± ∞ ¹   694.6Mi ± ∞ ¹  -57.61% (p=0.008 n=5)
geomean                                              1.077Gi         618.0Mi        -43.95%
¹ need >= 6 samples for confidence interval at level 0.95

                                       │ /tmp/tmpenxj1usu.main.txt │     /tmp/tmpwzh_86iu.target.txt     │
                                       │           B/op            │     B/op       vs base              │
MarshalConcrete/CanadaGeometry_Sonic-8               273.7Ki ± ∞ ¹   272.2Ki ± ∞ ¹  -0.54% (p=0.008 n=5)
MarshalConcrete/CitmCatalog_Sonic-8                  498.0Ki ± ∞ ¹   496.3Ki ± ∞ ¹  -0.36% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-8                 1.888Mi ± ∞ ¹   1.858Mi ± ∞ ¹  -1.59% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-8                18.14Ki ± ∞ ¹   18.07Ki ± ∞ ¹  -0.39% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-8                18.14Ki ± ∞ ¹   18.08Ki ± ∞ ¹  -0.34% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-8                  3.811Mi ± ∞ ¹   3.809Mi ± ∞ ¹       ~ (p=0.222 n=5)
MarshalConcrete/TwitterStatus_Sonic-8                489.5Ki ± ∞ ¹   488.3Ki ± ∞ ¹  -0.25% (p=0.016 n=5)
geomean                                              288.3Ki         286.9Ki        -0.50%
¹ need >= 6 samples for confidence interval at level 0.95

                                       │ /tmp/tmpenxj1usu.main.txt │     /tmp/tmpwzh_86iu.target.txt     │
                                       │         allocs/op         │  allocs/op    vs base               │
MarshalConcrete/CanadaGeometry_Sonic-8                 4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalConcrete/CitmCatalog_Sonic-8                    4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-8                   4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-8                  4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-8                  4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-8                   17.94k ± ∞ ¹   17.94k ± ∞ ¹   -0.01% (p=0.008 n=5)
MarshalConcrete/TwitterStatus_Sonic-8                  4.000 ± ∞ ¹    2.000 ± ∞ ¹  -50.00% (p=0.008 n=5)
geomean                                                13.30          7.340        -44.80%
¹ need >= 6 samples for confidence interval at level 0.95
liuq19 commented 1 week ago

Compare with encoding/json in M1 Mac(aarch64) in go1.20.4

goos: darwin
goarch: arm64
pkg: github.com/bytedance/sonic/generic_test
                                           │   main.txt    │              target.txt              │
                                           │    sec/op     │    sec/op     vs base                │
UnmarshalConcrete/CanadaGeometry_Sonic-10     5.091m ± ∞ ¹   1.205m ± ∞ ¹   -76.33% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-10       27.978m ± ∞ ¹   3.731m ± ∞ ¹   -86.66% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-10       32.36m ± ∞ ¹   12.97m ± ∞ ¹   -59.93% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-10     441.26µ ± ∞ ¹   91.88µ ± ∞ ¹   -79.18% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-10     152.42µ ± ∞ ¹   12.91µ ± ∞ ¹   -91.53% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-10       30.497m ± ∞ ¹   6.189m ± ∞ ¹   -79.71% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-10      8.700m ± ∞ ¹   1.601m ± ∞ ¹   -81.60% (p=0.008 n=5)
UnmarshalInterface/CanadaGeometry_Sonic-10   7417.1µ ± ∞ ¹   843.9µ ± ∞ ¹   -88.62% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-10      27.106m ± ∞ ¹   3.160m ± ∞ ¹   -88.34% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-10     28.903m ± ∞ ¹   8.407m ± ∞ ¹   -70.91% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-10    502.42µ ± ∞ ¹   94.76µ ± ∞ ¹   -81.14% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-10    148.57µ ± ∞ ¹   17.35µ ± ∞ ¹   -88.32% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-10      27.308m ± ∞ ¹   7.876m ± ∞ ¹   -71.16% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-10    13.292m ± ∞ ¹   1.344m ± ∞ ¹   -89.89% (p=0.008 n=5)
MarshalConcrete/CanadaGeometry_Sonic-10       2.166m ± ∞ ¹   1.849m ± ∞ ¹         ~ (p=0.095 n=5)
MarshalConcrete/CitmCatalog_Sonic-10          1.342m ± ∞ ¹   2.705m ± ∞ ¹  +101.53% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-10         6.191m ± ∞ ¹   9.635m ± ∞ ¹   +55.63% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-10       42.768µ ± ∞ ¹   9.780µ ± ∞ ¹   -77.13% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-10        49.93µ ± ∞ ¹   10.14µ ± ∞ ¹   -79.70% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-10          13.43m ± ∞ ¹   12.23m ± ∞ ¹         ~ (p=0.690 n=5)
MarshalConcrete/TwitterStatus_Sonic-10        1.005m ± ∞ ¹   1.080m ± ∞ ¹         ~ (p=0.548 n=5)
MarshalInterface/CanadaGeometry_Sonic-10      2.616m ± ∞ ¹   2.962m ± ∞ ¹         ~ (p=0.548 n=5)
MarshalInterface/CitmCatalog_Sonic-10         7.891m ± ∞ ¹   8.323m ± ∞ ¹         ~ (p=0.310 n=5)
MarshalInterface/GolangSource_Sonic-10        25.04m ± ∞ ¹   26.00m ± ∞ ¹         ~ (p=0.310 n=5)
MarshalInterface/StringEscaped_Sonic-10       48.69µ ± ∞ ¹   18.65µ ± ∞ ¹   -61.69% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-10       46.45µ ± ∞ ¹   18.28µ ± ∞ ¹   -60.64% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-10         12.64m ± ∞ ¹   11.66m ± ∞ ¹         ~ (p=0.151 n=5)
MarshalInterface/TwitterStatus_Sonic-10       4.265m ± ∞ ¹   3.242m ± ∞ ¹   -23.98% (p=0.008 n=5)
geomean                                       2.602m         932.0µ         -64.17%
¹ need >= 6 samples for confidence interval at level 0.95

                                           │    main.txt    │               target.txt                │
                                           │      B/s       │      B/s        vs base                 │
UnmarshalConcrete/CanadaGeometry_Sonic-10     50.66Mi ± ∞ ¹   214.02Mi ± ∞ ¹   +322.48% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-10        58.87Mi ± ∞ ¹   441.44Mi ± ∞ ¹   +649.85% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-10       57.19Mi ± ∞ ¹   142.73Mi ± ∞ ¹   +149.56% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-10      90.90Mi ± ∞ ¹   436.60Mi ± ∞ ¹   +380.29% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-10      113.4Mi ± ∞ ¹   1338.7Mi ± ∞ ¹  +1080.51% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-10        62.81Mi ± ∞ ¹   309.50Mi ± ∞ ¹   +392.76% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-10      69.23Mi ± ∞ ¹   376.12Mi ± ∞ ¹   +443.31% (p=0.008 n=5)
UnmarshalInterface/CanadaGeometry_Sonic-10    34.77Mi ± ∞ ¹   305.59Mi ± ∞ ¹   +778.85% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-10       60.77Mi ± ∞ ¹   521.24Mi ± ∞ ¹   +757.75% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-10      64.03Mi ± ∞ ¹   220.14Mi ± ∞ ¹   +243.80% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-10     79.84Mi ± ∞ ¹   423.34Mi ± ∞ ¹   +430.22% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-10     116.3Mi ± ∞ ¹    996.0Mi ± ∞ ¹   +756.09% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-10       70.14Mi ± ∞ ¹   243.19Mi ± ∞ ¹   +246.70% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-10     45.31Mi ± ∞ ¹   448.23Mi ± ∞ ¹   +889.27% (p=0.008 n=5)
MarshalConcrete/CanadaGeometry_Sonic-10       119.0Mi ± ∞ ¹    139.5Mi ± ∞ ¹          ~ (p=0.095 n=5)
MarshalConcrete/CitmCatalog_Sonic-10         1227.4Mi ± ∞ ¹    609.0Mi ± ∞ ¹    -50.38% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-10         298.9Mi ± ∞ ¹    192.1Mi ± ∞ ¹    -35.74% (p=0.008 n=5)
MarshalConcrete/StringEscaped_Sonic-10        937.9Mi ± ∞ ¹   4101.7Mi ± ∞ ¹   +337.32% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-10        346.2Mi ± ∞ ¹   1705.5Mi ± ∞ ¹   +392.69% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-10          142.7Mi ± ∞ ¹    156.6Mi ± ∞ ¹          ~ (p=0.690 n=5)
MarshalConcrete/TwitterStatus_Sonic-10        599.2Mi ± ∞ ¹    557.6Mi ± ∞ ¹          ~ (p=0.548 n=5)
MarshalInterface/CanadaGeometry_Sonic-10      98.58Mi ± ∞ ¹    87.07Mi ± ∞ ¹          ~ (p=0.548 n=5)
MarshalInterface/CitmCatalog_Sonic-10         208.7Mi ± ∞ ¹    197.9Mi ± ∞ ¹          ~ (p=0.310 n=5)
MarshalInterface/GolangSource_Sonic-10        73.90Mi ± ∞ ¹    71.18Mi ± ∞ ¹          ~ (p=0.310 n=5)
MarshalInterface/StringEscaped_Sonic-10       823.9Mi ± ∞ ¹   2150.8Mi ± ∞ ¹   +161.04% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-10       372.1Mi ± ∞ ¹    945.4Mi ± ∞ ¹   +154.06% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-10         151.6Mi ± ∞ ¹    164.3Mi ± ∞ ¹          ~ (p=0.151 n=5)
MarshalInterface/TwitterStatus_Sonic-10       141.2Mi ± ∞ ¹    185.8Mi ± ∞ ¹    +31.55% (p=0.008 n=5)
geomean                                       134.1Mi          374.3Mi         +179.13%
¹ need >= 6 samples for confidence interval at level 0.95

                                           │    main.txt    │              target.txt              │
                                           │      B/op      │     B/op       vs base               │
UnmarshalConcrete/CanadaGeometry_Sonic-10    2326.4Ki ± ∞ ¹   417.6Ki ± ∞ ¹  -82.05% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-10        8.817Mi ± ∞ ¹   2.388Mi ± ∞ ¹  -72.92% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-10       12.82Mi ± ∞ ¹   18.11Mi ± ∞ ¹  +41.22% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-10     284.42Ki ± ∞ ¹   68.18Ki ± ∞ ¹  -76.03% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-10     117.09Ki ± ∞ ¹   20.35Ki ± ∞ ¹  -82.62% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-10        12.07Mi ± ∞ ¹   20.11Mi ± ∞ ¹  +66.57% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-10     4162.5Ki ± ∞ ¹   901.3Ki ± ∞ ¹  -78.35% (p=0.008 n=5)
UnmarshalInterface/CanadaGeometry_Sonic-10   2838.6Ki ± ∞ ¹   919.6Ki ± ∞ ¹  -67.60% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-10      12.181Mi ± ∞ ¹   5.718Mi ± ∞ ¹  -53.06% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-10      15.26Mi ± ∞ ¹   22.42Mi ± ∞ ¹  +46.91% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-10    295.16Ki ± ∞ ¹   77.74Ki ± ∞ ¹  -73.66% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-10    127.83Ki ± ∞ ¹   28.51Ki ± ∞ ¹  -77.70% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-10       14.94Mi ± ∞ ¹   22.90Mi ± ∞ ¹  +53.24% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-10     5.270Mi ± ∞ ¹   1.709Mi ± ∞ ¹  -67.58% (p=0.008 n=5)
MarshalConcrete/CanadaGeometry_Sonic-10       274.3Ki ± ∞ ¹   272.2Ki ± ∞ ¹   -0.77% (p=0.008 n=5)
MarshalConcrete/CitmCatalog_Sonic-10          552.5Ki ± ∞ ¹   496.4Ki ± ∞ ¹  -10.15% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-10         1.866Mi ± ∞ ¹   1.857Mi ± ∞ ¹        ~ (p=1.000 n=5)
MarshalConcrete/StringEscaped_Sonic-10        18.05Ki ± ∞ ¹   18.07Ki ± ∞ ¹   +0.11% (p=0.008 n=5)
MarshalConcrete/StringUnicode_Sonic-10        18.06Ki ± ∞ ¹   18.07Ki ± ∞ ¹   +0.09% (p=0.008 n=5)
MarshalConcrete/SyntheaFhir_Sonic-10          3.766Mi ± ∞ ¹   3.808Mi ± ∞ ¹   +1.10% (p=0.008 n=5)
MarshalConcrete/TwitterStatus_Sonic-10        500.6Ki ± ∞ ¹   488.6Ki ± ∞ ¹   -2.40% (p=0.008 n=5)
MarshalInterface/CanadaGeometry_Sonic-10      275.1Ki ± ∞ ¹   272.3Ki ± ∞ ¹   -1.00% (p=0.008 n=5)
MarshalInterface/CitmCatalog_Sonic-10        4374.2Ki ± ∞ ¹   496.8Ki ± ∞ ¹  -88.64% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-10       11.720Mi ± ∞ ¹   1.854Mi ± ∞ ¹  -84.18% (p=0.008 n=5)
MarshalInterface/StringEscaped_Sonic-10       24.06Ki ± ∞ ¹   18.05Ki ± ∞ ¹  -24.97% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-10       24.07Ki ± ∞ ¹   18.05Ki ± ∞ ¹  -24.98% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-10         6.265Mi ± ∞ ¹   1.095Mi ± ∞ ¹  -82.52% (p=0.008 n=5)
MarshalInterface/TwitterStatus_Sonic-10      1870.3Ki ± ∞ ¹   456.3Ki ± ∞ ¹  -75.60% (p=0.008 n=5)
geomean                                       1.075Mi         543.0Ki        -50.69%
¹ need >= 6 samples for confidence interval at level 0.95

                                           │     main.txt     │               target.txt               │
                                           │    allocs/op     │  allocs/op    vs base                  │
UnmarshalConcrete/CanadaGeometry_Sonic-10       16097.0 ± ∞ ¹    968.0 ± ∞ ¹   -93.99% (p=0.008 n=5)
UnmarshalConcrete/CitmCatalog_Sonic-10           33.05k ± ∞ ¹   12.71k ± ∞ ¹   -61.55% (p=0.008 n=5)
UnmarshalConcrete/GolangSource_Sonic-10          79.89k ± ∞ ¹   13.51k ± ∞ ¹   -83.09% (p=0.008 n=5)
UnmarshalConcrete/StringEscaped_Sonic-10         196.00 ± ∞ ¹    64.00 ± ∞ ¹   -67.35% (p=0.008 n=5)
UnmarshalConcrete/StringUnicode_Sonic-10         77.000 ± ∞ ¹    6.000 ± ∞ ¹   -92.21% (p=0.008 n=5)
UnmarshalConcrete/SyntheaFhir_Sonic-10           34.66k ± ∞ ¹   13.68k ± ∞ ¹   -60.53% (p=0.008 n=5)
UnmarshalConcrete/TwitterStatus_Sonic-10         9.045k ± ∞ ¹   1.848k ± ∞ ¹   -79.57% (p=0.008 n=5)
UnmarshalInterface/CanadaGeometry_Sonic-10     52234.00 ± ∞ ¹    12.00 ± ∞ ¹   -99.98% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-10         95391.0 ± ∞ ¹    294.0 ± ∞ ¹   -99.69% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-10      271296.00 ± ∞ ¹    13.00 ± ∞ ¹  -100.00% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-10         323.0 ± ∞ ¹    131.0 ± ∞ ¹   -59.44% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-10        204.00 ± ∞ ¹    13.00 ± ∞ ¹   -93.63% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-10        134.405k ± ∞ ¹   1.001k ± ∞ ¹   -99.26% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-10       31282.0 ± ∞ ¹    804.0 ± ∞ ¹   -97.43% (p=0.008 n=5)
MarshalConcrete/CanadaGeometry_Sonic-10           2.000 ± ∞ ¹    2.000 ± ∞ ¹         ~ (p=1.000 n=5) ²
MarshalConcrete/CitmCatalog_Sonic-10            913.000 ± ∞ ¹    2.000 ± ∞ ¹   -99.78% (p=0.008 n=5)
MarshalConcrete/GolangSource_Sonic-10             2.000 ± ∞ ¹    2.000 ± ∞ ¹         ~ (p=1.000 n=5) ²
MarshalConcrete/StringEscaped_Sonic-10            2.000 ± ∞ ¹    2.000 ± ∞ ¹         ~ (p=1.000 n=5) ²
MarshalConcrete/StringUnicode_Sonic-10            2.000 ± ∞ ¹    2.000 ± ∞ ¹         ~ (p=1.000 n=5) ²
MarshalConcrete/SyntheaFhir_Sonic-10             18.05k ± ∞ ¹   17.94k ± ∞ ¹    -0.62% (p=0.008 n=5)
MarshalConcrete/TwitterStatus_Sonic-10          202.000 ± ∞ ¹    2.000 ± ∞ ¹   -99.01% (p=0.008 n=5)
MarshalInterface/CanadaGeometry_Sonic-10         32.000 ± ∞ ¹    2.000 ± ∞ ¹   -93.75% (p=0.008 n=5)
MarshalInterface/CitmCatalog_Sonic-10         95478.000 ± ∞ ¹    2.000 ± ∞ ¹  -100.00% (p=0.008 n=5)
MarshalInterface/GolangSource_Sonic-10       230518.000 ± ∞ ¹    2.000 ± ∞ ¹  -100.00% (p=0.008 n=5)
MarshalInterface/StringEscaped_Sonic-10         126.000 ± ∞ ¹    2.000 ± ∞ ¹   -98.41% (p=0.008 n=5)
MarshalInterface/StringUnicode_Sonic-10         126.000 ± ∞ ¹    2.000 ± ∞ ¹   -98.41% (p=0.008 n=5)
MarshalInterface/SyntheaFhir_Sonic-10        131964.000 ± ∞ ¹    2.000 ± ∞ ¹  -100.00% (p=0.008 n=5)
MarshalInterface/TwitterStatus_Sonic-10       31056.000 ± ∞ ¹    2.000 ± ∞ ¹   -99.99% (p=0.008 n=5)
geomean                                          1.973k          34.83         -98.23%
¹ need >= 6 samples for confidence interval at level 0.95
liuq19 commented 1 week ago

Not batch allocate the map will cause 10% overhead here.

                                          │ /tmp/tmp43o30mh4.main.txt │     /tmp/tmpvy6cat00.target.txt     │
                                          │          sec/op           │    sec/op     vs base               │
UnmarshalInterface/CanadaGeometry_Sonic-8                3.186m ± ∞ ¹   1.243m ± ∞ ¹  -60.99% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                   9.421m ± ∞ ¹   6.542m ± ∞ ¹  -30.56% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                  18.54m ± ∞ ¹   12.34m ± ∞ ¹  -33.43% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-8                107.96µ ± ∞ ¹   87.50µ ± ∞ ¹  -18.95% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                 25.56µ ± ∞ ¹   15.75µ ± ∞ ¹  -38.38% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                   12.31m ± ∞ ¹   11.43m ± ∞ ¹   -7.18% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-8                 3.732m ± ∞ ¹   2.216m ± ∞ ¹  -40.61% (p=0.008 n=5)
geomean                                                  1.837m         1.196m        -34.88%
¹ need >= 6 samples for confidence interval at level 0.95

                                          │ /tmp/tmp43o30mh4.main.txt │      /tmp/tmpvy6cat00.target.txt       │
                                          │            B/s            │      B/s        vs base                │
UnmarshalInterface/CanadaGeometry_Sonic-8               80.93Mi ± ∞ ¹   207.45Mi ± ∞ ¹  +156.34% (p=0.008 n=5)
UnmarshalInterface/CitmCatalog_Sonic-8                  174.8Mi ± ∞ ¹    251.8Mi ± ∞ ¹   +44.02% (p=0.008 n=5)
UnmarshalInterface/GolangSource_Sonic-8                 99.81Mi ± ∞ ¹   149.94Mi ± ∞ ¹   +50.22% (p=0.008 n=5)
UnmarshalInterface/StringEscaped_Sonic-8                371.5Mi ± ∞ ¹    458.4Mi ± ∞ ¹   +23.39% (p=0.008 n=5)
UnmarshalInterface/StringUnicode_Sonic-8                676.2Mi ± ∞ ¹   1097.5Mi ± ∞ ¹   +62.30% (p=0.008 n=5)
UnmarshalInterface/SyntheaFhir_Sonic-8                  155.6Mi ± ∞ ¹    167.6Mi ± ∞ ¹    +7.74% (p=0.008 n=5)
UnmarshalInterface/TwitterStatus_Sonic-8                161.4Mi ± ∞ ¹    271.7Mi ± ∞ ¹   +68.38% (p=0.008 n=5)
geomean                                                 189.9Mi          291.6Mi         +53.57%
¹ need >= 6 samples for confidence interval at level 0.95