minio / simdjson-go

Golang port of simdjson: parsing gigabytes of JSON per second
Apache License 2.0
1.82k stars 88 forks source link

Fix serializer & tests #7

Closed klauspost closed 4 years ago

klauspost commented 4 years ago

Serializes at ~2x the speed in the NDJSON example. De-serializes at ~6x the speed on NDJSON.

Percentages are percentage of original JSON size.

1M records, NDJSON:

BenchmarkSerializeNDJSON/default-12                    1    1414274800 ns/op     258.43 MB/s    19217952 B/op       3193 allocs/op
--- BENCH: BenchmarkSerializeNDJSON/default-12
    parsed_serialize_test.go:134: 365489369 (JSON) -> 61278257 (Serialized) 16.76608465183566 %
BenchmarkSerializeNDJSON/none-12                       1    1398844300 ns/op     261.28 MB/s       65744 B/op          8 allocs/op
--- BENCH: BenchmarkSerializeNDJSON/none-12
    parsed_serialize_test.go:134: 365489369 (JSON) -> 647761879 (Serialized) 177.23138726916022 %
BenchmarkSerializeNDJSON/fast-12                       1    1376384200 ns/op     265.54 MB/s    16046656 B/op       3177 allocs/op
--- BENCH: BenchmarkSerializeNDJSON/fast-12
    parsed_serialize_test.go:134: 365489369 (JSON) -> 62554609 (Serialized) 17.11530192277631 %
BenchmarkSerializeNDJSON/best-12                       1    1429933200 ns/op     255.60 MB/s    26138976 B/op        170 allocs/op
--- BENCH: BenchmarkSerializeNDJSON/best-12
    parsed_serialize_test.go:134: 365489369 (JSON) -> 39217503 (Serialized) 10.730135080892051 %

1M records, NDJSON de-serialize:


BenchmarkDeSerializeNDJSON/default-12                  3     387993433 ns/op     942.00 MB/s     1750874 B/op         19 allocs/op
--- BENCH: BenchmarkDeSerializeNDJSON/default-12
    parsed_serialize_test.go:175: 365489369 (JSON) -> 61482212 (Serialized) 16.821887916526514 %
BenchmarkDeSerializeNDJSON/none-12                     5     216631960 ns/op    1687.14 MB/s         336 B/op         15 allocs/op
--- BENCH: BenchmarkDeSerializeNDJSON/none-12
    parsed_serialize_test.go:175: 365489369 (JSON) -> 647773372 (Serialized) 177.23453182026753 %
BenchmarkDeSerializeNDJSON/fast-12                     3     368398600 ns/op     992.10 MB/s         480 B/op         18 allocs/op
--- BENCH: BenchmarkDeSerializeNDJSON/fast-12
    parsed_serialize_test.go:175: 365489369 (JSON) -> 62840137 (Serialized) 17.19342403089158 %
BenchmarkDeSerializeNDJSON/best-12                     2     625885100 ns/op     583.96 MB/s     3744344 B/op         73 allocs/op
--- BENCH: BenchmarkDeSerializeNDJSON/best-12
    parsed_serialize_test.go:175: 365489369 (JSON) -> 39538847 (Serialized) 10.818056653242902 %
PASS

Smaller blocks:

BenchmarkSerialize/default/apache_builds-12                 2385        488826 ns/op     260.37 MB/s      179326 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/apache_builds-12
    parsed_serialize_test.go:37: 127275 (JSON) -> 31458 (Serialized) 24.716558632881554 %
BenchmarkSerialize/default/canada-12                         100      13474126 ns/op     167.06 MB/s      912988 B/op         47 allocs/op
--- BENCH: BenchmarkSerialize/default/canada-12
    parsed_serialize_test.go:37: 2251051 (JSON) -> 735682 (Serialized) 32.681711787071904 %
BenchmarkSerialize/default/citm_catalog-12                   516       2514632 ns/op     686.86 MB/s      204854 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/citm_catalog-12
    parsed_serialize_test.go:37: 1727204 (JSON) -> 36507 (Serialized) 2.113647258806719 %
BenchmarkSerialize/default/github_events-12                 3793        276877 ns/op     235.24 MB/s      125319 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/github_events-12
    parsed_serialize_test.go:37: 65132 (JSON) -> 18952 (Serialized) 29.09783209482282 %
BenchmarkSerialize/default/gsoc-2018-12                      100      14242309 ns/op     233.66 MB/s      828581 B/op         46 allocs/op
--- BENCH: BenchmarkSerialize/default/gsoc-2018-12
    parsed_serialize_test.go:37: 3327831 (JSON) -> 628037 (Serialized) 18.872262443615675 %
BenchmarkSerialize/default/instruments-12                   1603        996746 ns/op     221.07 MB/s      125025 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/instruments-12
    parsed_serialize_test.go:37: 220346 (JSON) -> 8344 (Serialized) 3.786771713577737 %
BenchmarkSerialize/default/numbers-12                       2266        477525 ns/op     314.38 MB/s       94364 B/op         31 allocs/op
--- BENCH: BenchmarkSerialize/default/numbers-12
    parsed_serialize_test.go:37: 150124 (JSON) -> 80111 (Serialized) 53.36321973834963 %
BenchmarkSerialize/default/marine_ik-12                      153       7744171 ns/op     385.25 MB/s      461689 B/op         49 allocs/op
--- BENCH: BenchmarkSerialize/default/marine_ik-12
    parsed_serialize_test.go:37: 2983466 (JSON) -> 871184 (Serialized) 29.200399803450082 %
BenchmarkSerialize/default/mesh-12                           219       4836409 ns/op     149.61 MB/s      246199 B/op         39 allocs/op
--- BENCH: BenchmarkSerialize/default/mesh-12
    parsed_serialize_test.go:37: 723597 (JSON) -> 259738 (Serialized) 35.895394812305746 %
BenchmarkSerialize/default/mesh.pretty-12                    282       3738356 ns/op     421.94 MB/s      146404 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/mesh.pretty-12
    parsed_serialize_test.go:37: 1577353 (JSON) -> 256824 (Serialized) 16.28196098146705 %
BenchmarkSerialize/default/twitterescaped-12                 955       1235437 ns/op     455.23 MB/s      103067 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/twitterescaped-12
    parsed_serialize_test.go:37: 562408 (JSON) -> 66256 (Serialized) 11.780771255031935 %
BenchmarkSerialize/default/twitter-12                        865       1221602 ns/op     516.96 MB/s       94528 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/twitter-12
    parsed_serialize_test.go:37: 631514 (JSON) -> 66256 (Serialized) 10.491612220790039 %
BenchmarkSerialize/default/random-12                         451       2660294 ns/op     191.89 MB/s      126231 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/random-12
    parsed_serialize_test.go:37: 510476 (JSON) -> 139476 (Serialized) 27.322734075647045 %
BenchmarkSerialize/default/update-center-12                  393       2953944 ns/op     180.50 MB/s      126789 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/default/update-center-12
    parsed_serialize_test.go:37: 533178 (JSON) -> 231599 (Serialized) 43.43746366129135 %
BenchmarkSerialize/none/apache_builds-12                    2407        482131 ns/op     263.98 MB/s       95763 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/apache_builds-12
    parsed_serialize_test.go:37: 127275 (JSON) -> 31458 (Serialized) 24.716558632881554 %
BenchmarkSerialize/none/canada-12                            100      19567707 ns/op     115.04 MB/s      469224 B/op         44 allocs/op
--- BENCH: BenchmarkSerialize/none/canada-12
    parsed_serialize_test.go:37: 2251051 (JSON) -> 735682 (Serialized) 32.681711787071904 %
BenchmarkSerialize/none/citm_catalog-12                      350       4587868 ns/op     376.47 MB/s      109945 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/citm_catalog-12
    parsed_serialize_test.go:37: 1727204 (JSON) -> 36507 (Serialized) 2.113647258806719 %
BenchmarkSerialize/none/github_events-12                    4180        271529 ns/op     239.87 MB/s       94953 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/github_events-12
    parsed_serialize_test.go:37: 65132 (JSON) -> 18952 (Serialized) 29.09783209482282 %
BenchmarkSerialize/none/gsoc-2018-12                         100      10862535 ns/op     306.36 MB/s      775713 B/op         45 allocs/op
--- BENCH: BenchmarkSerialize/none/gsoc-2018-12
    parsed_serialize_test.go:37: 3327831 (JSON) -> 628037 (Serialized) 18.872262443615675 %
BenchmarkSerialize/none/instruments-12                      1603        976996 ns/op     225.53 MB/s       80210 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/instruments-12
    parsed_serialize_test.go:37: 220346 (JSON) -> 8344 (Serialized) 3.786771713577737 %
BenchmarkSerialize/none/numbers-12                          8853        135047 ns/op    1111.64 MB/s       78189 B/op         31 allocs/op
--- BENCH: BenchmarkSerialize/none/numbers-12
    parsed_serialize_test.go:37: 150124 (JSON) -> 80111 (Serialized) 53.36321973834963 %
BenchmarkSerialize/none/marine_ik-12                         140       8683956 ns/op     343.56 MB/s      241850 B/op         48 allocs/op
--- BENCH: BenchmarkSerialize/none/marine_ik-12
    parsed_serialize_test.go:37: 2983466 (JSON) -> 871184 (Serialized) 29.200399803450082 %
BenchmarkSerialize/none/mesh-12                              374       3397186 ns/op     213.00 MB/s      158065 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/mesh-12
    parsed_serialize_test.go:37: 723597 (JSON) -> 259738 (Serialized) 35.895394812305746 %
BenchmarkSerialize/none/mesh.pretty-12                       283       4490418 ns/op     351.27 MB/s      161061 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/mesh.pretty-12
    parsed_serialize_test.go:37: 1577353 (JSON) -> 256824 (Serialized) 16.28196098146705 %
BenchmarkSerialize/none/twitterescaped-12                    904       1231937 ns/op     456.52 MB/s       98056 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/twitterescaped-12
    parsed_serialize_test.go:37: 562408 (JSON) -> 66256 (Serialized) 11.780771255031935 %
BenchmarkSerialize/none/twitter-12                           918       1209183 ns/op     522.27 MB/s       95279 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/twitter-12
    parsed_serialize_test.go:37: 631514 (JSON) -> 66256 (Serialized) 10.491612220790039 %
BenchmarkSerialize/none/random-12                            450       2683863 ns/op     190.20 MB/s      114613 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/random-12
    parsed_serialize_test.go:37: 510476 (JSON) -> 139476 (Serialized) 27.322734075647045 %
BenchmarkSerialize/none/update-center-12                     396       2951627 ns/op     180.64 MB/s      121004 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/none/update-center-12
    parsed_serialize_test.go:37: 533178 (JSON) -> 231599 (Serialized) 43.43746366129135 %
BenchmarkSerialize/fast/apache_builds-12                    2407        477336 ns/op     266.64 MB/s       83037 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/apache_builds-12
    parsed_serialize_test.go:37: 127275 (JSON) -> 31458 (Serialized) 24.716558632881554 %
BenchmarkSerialize/fast/canada-12                            100      19428567 ns/op     115.86 MB/s      416438 B/op         44 allocs/op
--- BENCH: BenchmarkSerialize/fast/canada-12
    parsed_serialize_test.go:37: 2251051 (JSON) -> 735682 (Serialized) 32.681711787071904 %
BenchmarkSerialize/fast/citm_catalog-12                      272       5012522 ns/op     344.58 MB/s      164746 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/citm_catalog-12
    parsed_serialize_test.go:37: 1727204 (JSON) -> 36507 (Serialized) 2.113647258806719 %
BenchmarkSerialize/fast/github_events-12                    4461        269391 ns/op     241.77 MB/s       86374 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/github_events-12
    parsed_serialize_test.go:37: 65132 (JSON) -> 18952 (Serialized) 29.09783209482282 %
BenchmarkSerialize/fast/gsoc-2018-12                         100      12303820 ns/op     270.47 MB/s      585519 B/op         45 allocs/op
--- BENCH: BenchmarkSerialize/fast/gsoc-2018-12
    parsed_serialize_test.go:37: 3327831 (JSON) -> 628037 (Serialized) 18.872262443615675 %
BenchmarkSerialize/fast/instruments-12                      1522       1283191 ns/op     171.72 MB/s       83648 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/instruments-12
    parsed_serialize_test.go:37: 220346 (JSON) -> 8344 (Serialized) 3.786771713577737 %
BenchmarkSerialize/fast/numbers-12                          8721        136203 ns/op    1102.21 MB/s       74959 B/op         31 allocs/op
--- BENCH: BenchmarkSerialize/fast/numbers-12
    parsed_serialize_test.go:37: 150124 (JSON) -> 80111 (Serialized) 53.36321973834963 %
BenchmarkSerialize/fast/marine_ik-12                         163       7385830 ns/op     403.94 MB/s      321038 B/op         49 allocs/op
--- BENCH: BenchmarkSerialize/fast/marine_ik-12
    parsed_serialize_test.go:37: 2983466 (JSON) -> 871184 (Serialized) 29.200399803450082 %
BenchmarkSerialize/fast/mesh-12                              366       4835783 ns/op     149.63 MB/s      113890 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/mesh-12
    parsed_serialize_test.go:37: 723597 (JSON) -> 259738 (Serialized) 35.895394812305746 %
BenchmarkSerialize/fast/mesh.pretty-12                       250       5267033 ns/op     299.48 MB/s      211355 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/mesh.pretty-12
    parsed_serialize_test.go:37: 1577353 (JSON) -> 256824 (Serialized) 16.28196098146705 %
BenchmarkSerialize/fast/twitterescaped-12                    841       1225088 ns/op     459.08 MB/s      101583 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/twitterescaped-12
    parsed_serialize_test.go:37: 562408 (JSON) -> 66256 (Serialized) 11.780771255031935 %
BenchmarkSerialize/fast/twitter-12                           954       1255663 ns/op     502.93 MB/s       97561 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/twitter-12
    parsed_serialize_test.go:37: 631514 (JSON) -> 66256 (Serialized) 10.491612220790039 %
BenchmarkSerialize/fast/random-12                            463       2602118 ns/op     196.18 MB/s      120151 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/random-12
    parsed_serialize_test.go:37: 510476 (JSON) -> 139476 (Serialized) 27.322734075647045 %
BenchmarkSerialize/fast/update-center-12                     396       3010992 ns/op     177.08 MB/s      158331 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/fast/update-center-12
    parsed_serialize_test.go:37: 533178 (JSON) -> 231599 (Serialized) 43.43746366129135 %
BenchmarkSerialize/best/apache_builds-12                    2406        477758 ns/op     266.40 MB/s       83918 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/apache_builds-12
    parsed_serialize_test.go:37: 127275 (JSON) -> 31458 (Serialized) 24.716558632881554 %
BenchmarkSerialize/best/canada-12                            100      17360168 ns/op     129.67 MB/s      511507 B/op         44 allocs/op
--- BENCH: BenchmarkSerialize/best/canada-12
    parsed_serialize_test.go:37: 2251051 (JSON) -> 735682 (Serialized) 32.681711787071904 %
BenchmarkSerialize/best/citm_catalog-12                      264       4994173 ns/op     345.84 MB/s      163658 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/citm_catalog-12
    parsed_serialize_test.go:37: 1727204 (JSON) -> 36507 (Serialized) 2.113647258806719 %
BenchmarkSerialize/best/github_events-12                    4407        272865 ns/op     238.70 MB/s       76775 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/github_events-12
    parsed_serialize_test.go:37: 65132 (JSON) -> 18952 (Serialized) 29.09783209482282 %
BenchmarkSerialize/best/gsoc-2018-12                         100      10852114 ns/op     306.65 MB/s      469364 B/op         44 allocs/op
--- BENCH: BenchmarkSerialize/best/gsoc-2018-12
    parsed_serialize_test.go:37: 3327831 (JSON) -> 628037 (Serialized) 18.872262443615675 %
BenchmarkSerialize/best/instruments-12                      2187        720069 ns/op     306.01 MB/s       77818 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/instruments-12
    parsed_serialize_test.go:37: 220346 (JSON) -> 8344 (Serialized) 3.786771713577737 %
BenchmarkSerialize/best/numbers-12                          8020        138797 ns/op    1081.61 MB/s       73650 B/op         31 allocs/op
--- BENCH: BenchmarkSerialize/best/numbers-12
    parsed_serialize_test.go:37: 150124 (JSON) -> 80111 (Serialized) 53.36321973834963 %
BenchmarkSerialize/best/marine_ik-12                         162       7856525 ns/op     379.74 MB/s      205201 B/op         48 allocs/op
--- BENCH: BenchmarkSerialize/best/marine_ik-12
    parsed_serialize_test.go:37: 2983466 (JSON) -> 871184 (Serialized) 29.200399803450082 %
BenchmarkSerialize/best/mesh-12                              418       3535512 ns/op     204.67 MB/s      140966 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/mesh-12
    parsed_serialize_test.go:37: 723597 (JSON) -> 259738 (Serialized) 35.895394812305746 %
BenchmarkSerialize/best/mesh.pretty-12                       308       4566657 ns/op     345.41 MB/s      160274 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/mesh.pretty-12
    parsed_serialize_test.go:37: 1577353 (JSON) -> 256824 (Serialized) 16.28196098146705 %
BenchmarkSerialize/best/twitterescaped-12                    877       1217999 ns/op     461.75 MB/s      101405 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/twitterescaped-12
    parsed_serialize_test.go:37: 562408 (JSON) -> 66256 (Serialized) 11.780771255031935 %
BenchmarkSerialize/best/twitter-12                           939       1242055 ns/op     508.44 MB/s      101405 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/twitter-12
    parsed_serialize_test.go:37: 631514 (JSON) -> 66256 (Serialized) 10.491612220790039 %
BenchmarkSerialize/best/random-12                            468       2642523 ns/op     193.18 MB/s      108302 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/random-12
    parsed_serialize_test.go:37: 510476 (JSON) -> 139476 (Serialized) 27.322734075647045 %
BenchmarkSerialize/best/update-center-12                     396       2951720 ns/op     180.63 MB/s      123697 B/op         38 allocs/op
--- BENCH: BenchmarkSerialize/best/update-center-12
    parsed_serialize_test.go:37: 533178 (JSON) -> 231599 (Serialized) 43.43746366129135 %

De-serialize blocks:

BenchmarkDeSerialize/default/apache_builds-12              16810         72204 ns/op    1762.71 MB/s        1518 B/op         18 allocs/op
BenchmarkDeSerialize/default/canada-12                       541       2151607 ns/op    1046.22 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/default/citm_catalog-12                2559        433850 ns/op    3981.11 MB/s        2440 B/op         18 allocs/op
BenchmarkDeSerialize/default/github_events-12              28579         42525 ns/op    1531.61 MB/s         629 B/op         18 allocs/op
BenchmarkDeSerialize/default/gsoc-2018-12                    775       1546996 ns/op    2151.16 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/default/instruments-12                12244         99544 ns/op    2213.55 MB/s         838 B/op         18 allocs/op
BenchmarkDeSerialize/default/numbers-12                    19627         60775 ns/op    2470.18 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/default/marine_ik-12                    412       2689753 ns/op    1109.20 MB/s       12436 B/op         18 allocs/op
BenchmarkDeSerialize/default/mesh-12                        2228        519714 ns/op    1392.30 MB/s        5156 B/op         18 allocs/op
BenchmarkDeSerialize/default/mesh.pretty-12                 2313        501054 ns/op    3148.07 MB/s        4453 B/op         18 allocs/op
BenchmarkDeSerialize/default/twitterescaped-12              5475        208749 ns/op    2694.19 MB/s         541 B/op         18 allocs/op
BenchmarkDeSerialize/default/twitter-12                     5012        209133 ns/op    3019.68 MB/s        2380 B/op         18 allocs/op
BenchmarkDeSerialize/default/random-12                      2797        395889 ns/op    1289.44 MB/s        2263 B/op         18 allocs/op
BenchmarkDeSerialize/default/update-center-12               2736        411169 ns/op    1296.74 MB/s        2487 B/op         18 allocs/op
BenchmarkDeSerialize/none/apache_builds-12                 39315         31228 ns/op    4075.68 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/canada-12                         1624        741336 ns/op    3036.48 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/citm_catalog-12                   4010        299198 ns/op    5772.77 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/github_events-12                108393         10912 ns/op    5968.63 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/gsoc-2018-12                      5728        212511 ns/op    15659.54 MB/s        336 B/op         15 allocs/op
BenchmarkDeSerialize/none/instruments-12                   21996         54092 ns/op    4073.55 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/numbers-12                       35460         33729 ns/op    4450.82 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/marine_ik-12                       853       1298036 ns/op    2298.45 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/mesh-12                           4620        255675 ns/op    2830.14 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/mesh.pretty-12                    4627        255482 ns/op    6174.03 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/twitterescaped-12                10000        111363 ns/op    5050.20 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/twitter-12                       10797        110754 ns/op    5701.98 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/random-12                         6333        225107 ns/op    2267.70 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/none/update-center-12                  6332        179107 ns/op    2976.88 MB/s         336 B/op         15 allocs/op
BenchmarkDeSerialize/fast/apache_builds-12                 16042         70264 ns/op    1811.39 MB/s         752 B/op         18 allocs/op
BenchmarkDeSerialize/fast/canada-12                          756       1548482 ns/op    1453.72 MB/s       12205 B/op         18 allocs/op
BenchmarkDeSerialize/fast/citm_catalog-12                   2614        432674 ns/op    3991.93 MB/s        2369 B/op         18 allocs/op
BenchmarkDeSerialize/fast/github_events-12                 25435         46824 ns/op    1391.00 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/fast/gsoc-2018-12                       890       1302330 ns/op    2555.29 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/fast/instruments-12                   12597         95930 ns/op    2296.94 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/fast/numbers-12                       19789         60320 ns/op    2488.80 MB/s         480 B/op         18 allocs/op
BenchmarkDeSerialize/fast/marine_ik-12                       484       2563776 ns/op    1163.70 MB/s        9166 B/op         18 allocs/op
BenchmarkDeSerialize/fast/mesh-12                           2559        442351 ns/op    1635.80 MB/s        4317 B/op         18 allocs/op
BenchmarkDeSerialize/fast/mesh.pretty-12                    2559        437280 ns/op    3607.19 MB/s        2397 B/op         18 allocs/op
BenchmarkDeSerialize/fast/twitterescaped-12                 5006        222647 ns/op    2526.01 MB/s        1405 B/op         18 allocs/op
BenchmarkDeSerialize/fast/twitter-12                        5391        226807 ns/op    2784.36 MB/s         481 B/op         18 allocs/op
BenchmarkDeSerialize/fast/random-12                         2797        432616 ns/op    1179.98 MB/s        2440 B/op         18 allocs/op
BenchmarkDeSerialize/fast/update-center-12                  2456        442333 ns/op    1205.38 MB/s        4838 B/op         18 allocs/op
BenchmarkDeSerialize/best/apache_builds-12                  2865        392876 ns/op     323.96 MB/s         338 B/op         15 allocs/op
BenchmarkDeSerialize/best/canada-12                          320       3749254 ns/op     600.40 MB/s         337 B/op         15 allocs/op
BenchmarkDeSerialize/best/citm_catalog-12                   1466        790499 ns/op    2184.95 MB/s         345 B/op         15 allocs/op
BenchmarkDeSerialize/best/github_events-12                  9250        125175 ns/op     520.33 MB/s         337 B/op         15 allocs/op
BenchmarkDeSerialize/best/gsoc-2018-12                       199       5786683 ns/op     575.08 MB/s         393 B/op         15 allocs/op
BenchmarkDeSerialize/best/instruments-12                    2269        505081 ns/op     436.26 MB/s         345 B/op         15 allocs/op
BenchmarkDeSerialize/best/numbers-12                        9284        326905 ns/op     459.23 MB/s     4194792 B/op         16 allocs/op
BenchmarkDeSerialize/best/marine_ik-12                       200       5895912 ns/op     506.02 MB/s         393 B/op         15 allocs/op
BenchmarkDeSerialize/best/mesh-12                            691       1699170 ns/op     425.85 MB/s         337 B/op         15 allocs/op
BenchmarkDeSerialize/best/mesh.pretty-12                     595       1979606 ns/op     796.80 MB/s         358 B/op         15 allocs/op
BenchmarkDeSerialize/best/twitterescaped-12                 1971        569272 ns/op     987.94 MB/s         342 B/op         15 allocs/op
BenchmarkDeSerialize/best/twitter-12                        1940        562414 ns/op    1122.86 MB/s         339 B/op         15 allocs/op
BenchmarkDeSerialize/best/random-12                          961       1202850 ns/op     424.39 MB/s         353 B/op         15 allocs/op
BenchmarkDeSerialize/best/update-center-12                   786       1366241 ns/op     390.25 MB/s         336 B/op         15 allocs/op
PASS

Fuzz tests: https://github.com/minio/simdjson-fuzz/pull/1