Skip to content

Remove parsing allocs #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 25, 2022
Merged

Conversation

klauspost
Copy link
Collaborator

@klauspost klauspost commented Dec 6, 2021

  • Re-use the channel between runs.
  • Fix temp slice escaping in findStructuralIndices.

Cleanup: Don't send params already in internalParsedJson.

benchmark                                      old ns/op     new ns/op     delta
BenchmarkParseSmall/copy-32                    1097          758           -30.88%
BenchmarkParseSmall/nocopy-32                  1032          674           -34.64%
BenchmarkParseSmall/nocopy-par-32              103           41.6          -59.44%
BenchmarkParseMedium/copy-32                   4518          4170          -7.70%
BenchmarkParseMedium/nocopy-32                 3830          3251          -15.12%
BenchmarkParseMedium/nocopy-par-32             242           178           -26.35%
BenchmarkParseLarge/copy-32                    57364         58955         +2.77%
BenchmarkParseLarge/nocopy-32                  46456         46993         +1.16%
BenchmarkParseLarge/nocopy-par-32              2569          2525          -1.71%
BenchmarkParseApache_builds/copy-32            136834        131745        -3.72%
BenchmarkParseApache_builds/nocopy-32          101684        95344         -6.24%
BenchmarkParseApache_builds/nocopy-par-32      6981          6895          -1.23%
BenchmarkParseCanada/copy-32                   11885695      12142371      +2.16%
BenchmarkParseCanada/nocopy-32                 11793277      12134212      +2.89%
BenchmarkParseCanada/nocopy-par-32             686432        641823        -6.50%
BenchmarkParseCitm_catalog/copy-32             1685947       1503883       -10.80%
BenchmarkParseCitm_catalog/nocopy-32           1250969       1311906       +4.87%
BenchmarkParseCitm_catalog/nocopy-par-32       89255         91381         +2.38%
BenchmarkParseGithub_events/copy-32            69842         72738         +4.15%
BenchmarkParseGithub_events/nocopy-32          56705         56879         +0.31%
BenchmarkParseGithub_events/nocopy-par-32      3221          3166          -1.71%
BenchmarkParseGsoc_2018/copy-32                1287979       1277811       -0.79%
BenchmarkParseGsoc_2018/nocopy-32              1015391       1014019       -0.14%
BenchmarkParseGsoc_2018/nocopy-par-32          138918        140691        +1.28%
BenchmarkParseInstruments/copy-32              308224        303929        -1.39%
BenchmarkParseInstruments/nocopy-32            264055        259507        -1.72%
BenchmarkParseInstruments/nocopy-par-32        16877         16861         -0.09%
BenchmarkParseMarine_ik/copy-32                13165667      13007582      -1.20%
BenchmarkParseMarine_ik/nocopy-32              12684994      12639697      -0.36%
BenchmarkParseMarine_ik/nocopy-par-32          690559        655854        -5.03%
BenchmarkParseMesh/copy-32                     3833472       3763927       -1.81%
BenchmarkParseMesh/nocopy-32                   3775770       3750355       -0.67%
BenchmarkParseMesh/nocopy-par-32               204998        195802        -4.49%
BenchmarkParseMesh_pretty/copy-32              4251213       4385560       +3.16%
BenchmarkParseMesh_pretty/nocopy-32            4230253       4380091       +3.54%
BenchmarkParseMesh_pretty/nocopy-par-32        240712        237028        -1.53%
BenchmarkParseNumbers/copy-32                  731972        707634        -3.32%
BenchmarkParseNumbers/nocopy-32                732324        706581        -3.52%
BenchmarkParseNumbers/nocopy-par-32            41009         39899         -2.71%
BenchmarkParseRandom/copy-32                   1058452       1066158       +0.73%
BenchmarkParseRandom/nocopy-32                 730790        755489        +3.38%
BenchmarkParseRandom/nocopy-par-32             47112         47751         +1.36%
BenchmarkParseTwitter/copy-32                  629000        631544        +0.40%
BenchmarkParseTwitter/nocopy-32                470858        468639        -0.47%
BenchmarkParseTwitter/nocopy-par-32            34359         34139         -0.64%
BenchmarkParseTwitterEscaped/copy-32           1003597       1006342       +0.27%
BenchmarkParseTwitterEscaped/nocopy-32         869137        866733        -0.28%
BenchmarkParseTwitterEscaped/nocopy-par-32     48923         48474         -0.92%
BenchmarkParseUpdate_center/copy-32            742999        762844        +2.67%
BenchmarkParseUpdate_center/nocopy-32          511315        523626        +2.41%
BenchmarkParseUpdate_center/nocopy-par-32      36312         36520         +0.57%
BenchmarkJsonParserLarge/nocopy-32             54605         58703         +7.50%
BenchmarkParseNumber/Pos/63bit-32              82.1          85.2          +3.68%
BenchmarkParseNumber/Neg/63bit-32              84.2          86.5          +2.84%
BenchmarkParseNumberFloat-32                   62.5          65.3          +4.44%
BenchmarkParseAtof64FloatGolang-32             32.2          32.4          +0.50%
BenchmarkParseNumberFloatExp-32                70.7          81.1          +14.64%
BenchmarkParseNumberBig-32                     132           152           +15.20%
BenchmarkParseNumberRandomBits-32              152           148           -3.02%
BenchmarkParseNumberRandomFloats-32            122           132           +8.89%
BenchmarkParseIntGolang/Pos/63bit-32           29.8          30.0          +0.57%
BenchmarkParseIntGolang/Neg/63bit-32           29.8          29.9          +0.44%

benchmark                                      old MB/s     new MB/s     speedup
BenchmarkParseSmall/copy-32                    172.36       249.27       1.45x
BenchmarkParseSmall/nocopy-32                  183.06       280.19       1.53x
BenchmarkParseSmall/nocopy-par-32              1840.85      4537.99      2.47x
BenchmarkParseMedium/copy-32                   515.25       558.21       1.08x
BenchmarkParseMedium/nocopy-32                 607.90       716.11       1.18x
BenchmarkParseMedium/nocopy-par-32             9633.42      13078.09     1.36x
BenchmarkParseLarge/copy-32                    490.15       476.92       0.97x
BenchmarkParseLarge/nocopy-32                  605.24       598.32       0.99x
BenchmarkParseLarge/nocopy-par-32              10942.90     11134.47     1.02x
BenchmarkParseApache_builds/copy-32            930.14       966.07       1.04x
BenchmarkParseApache_builds/nocopy-32          1251.68      1334.90      1.07x
BenchmarkParseApache_builds/nocopy-par-32      18231.76     18459.40     1.01x
BenchmarkParseCanada/copy-32                   189.39       185.39       0.98x
BenchmarkParseCanada/nocopy-32                 190.88       185.51       0.97x
BenchmarkParseCanada/nocopy-par-32             3279.35      3507.28      1.07x
BenchmarkParseCitm_catalog/copy-32             1024.47      1148.50      1.12x
BenchmarkParseCitm_catalog/nocopy-32           1380.69      1316.56      0.95x
BenchmarkParseCitm_catalog/nocopy-par-32       19351.41     18901.14     0.98x
BenchmarkParseGithub_events/copy-32            932.56       895.44       0.96x
BenchmarkParseGithub_events/nocopy-32          1148.61      1145.09      1.00x
BenchmarkParseGithub_events/nocopy-par-32      20218.27     20569.28     1.02x
BenchmarkParseGsoc_2018/copy-32                2583.76      2604.32      1.01x
BenchmarkParseGsoc_2018/nocopy-32              3277.39      3281.82      1.00x
BenchmarkParseGsoc_2018/nocopy-par-32          23955.43     23653.54     0.99x
BenchmarkParseInstruments/copy-32              714.89       724.99       1.01x
BenchmarkParseInstruments/nocopy-32            834.47       849.09       1.02x
BenchmarkParseInstruments/nocopy-par-32        13055.99     13068.51     1.00x
BenchmarkParseMarine_ik/copy-32                226.61       229.36       1.01x
BenchmarkParseMarine_ik/nocopy-32              235.20       236.04       1.00x
BenchmarkParseMarine_ik/nocopy-par-32          4320.37      4548.98      1.05x
BenchmarkParseMesh/copy-32                     188.76       192.25       1.02x
BenchmarkParseMesh/nocopy-32                   191.64       192.94       1.01x
BenchmarkParseMesh/nocopy-par-32               3529.77      3695.56      1.05x
BenchmarkParseMesh_pretty/copy-32              371.04       359.67       0.97x
BenchmarkParseMesh_pretty/nocopy-32            372.87       360.12       0.97x
BenchmarkParseMesh_pretty/nocopy-par-32        6552.88      6654.70      1.02x
BenchmarkParseNumbers/copy-32                  205.10       212.15       1.03x
BenchmarkParseNumbers/nocopy-32                205.00       212.47       1.04x
BenchmarkParseNumbers/nocopy-par-32            3660.71      3762.58      1.03x
BenchmarkParseRandom/copy-32                   482.29       478.80       0.99x
BenchmarkParseRandom/nocopy-32                 698.53       675.69       0.97x
BenchmarkParseRandom/nocopy-par-32             10835.45     10690.44     0.99x
BenchmarkParseTwitter/copy-32                  1004.00      999.95       1.00x
BenchmarkParseTwitter/nocopy-32                1341.20      1347.55      1.00x
BenchmarkParseTwitter/nocopy-par-32            18379.99     18498.35     1.01x
BenchmarkParseTwitterEscaped/copy-32           560.39       558.86       1.00x
BenchmarkParseTwitterEscaped/nocopy-32         647.09       648.88       1.00x
BenchmarkParseTwitterEscaped/nocopy-par-32     11495.89     11602.21     1.01x
BenchmarkParseUpdate_center/copy-32            717.60       698.93       0.97x
BenchmarkParseUpdate_center/nocopy-32          1042.76      1018.24      0.98x
BenchmarkParseUpdate_center/nocopy-par-32      14683.23     14599.63     0.99x
BenchmarkJsonParserLarge/nocopy-32             514.91       478.97       0.93x

benchmark                                      old allocs     new allocs     delta
BenchmarkParseSmall/copy-32                    11             1              -90.91%
BenchmarkParseSmall/nocopy-32                  11             1              -90.91%
BenchmarkParseSmall/nocopy-par-32              10             0              -100.00%
BenchmarkParseMedium/copy-32                   11             1              -90.91%
BenchmarkParseMedium/nocopy-32                 11             1              -90.91%
BenchmarkParseMedium/nocopy-par-32             10             0              -100.00%
BenchmarkParseLarge/copy-32                    16             3              -81.25%
BenchmarkParseLarge/nocopy-32                  16             3              -81.25%
BenchmarkParseLarge/nocopy-par-32              15             2              -86.67%
BenchmarkParseApache_builds/copy-32            21             3              -85.71%
BenchmarkParseApache_builds/nocopy-32          21             3              -85.71%
BenchmarkParseApache_builds/nocopy-par-32      20             2              -90.00%
BenchmarkParseCanada/copy-32                   249            3              -98.80%
BenchmarkParseCanada/nocopy-32                 249            3              -98.80%
BenchmarkParseCanada/nocopy-par-32             249            3              -98.80%
BenchmarkParseCitm_catalog/copy-32             109            3              -97.25%
BenchmarkParseCitm_catalog/nocopy-32           109            3              -97.25%
BenchmarkParseCitm_catalog/nocopy-par-32       109            3              -97.25%
BenchmarkParseGithub_events/copy-32            16             3              -81.25%
BenchmarkParseGithub_events/nocopy-32          16             3              -81.25%
BenchmarkParseGithub_events/nocopy-par-32      15             2              -86.67%
BenchmarkParseGsoc_2018/copy-32                66             3              -95.45%
BenchmarkParseGsoc_2018/nocopy-32              66             3              -95.45%
BenchmarkParseGsoc_2018/nocopy-par-32          66             3              -95.45%
BenchmarkParseInstruments/copy-32              32             3              -90.62%
BenchmarkParseInstruments/nocopy-32            32             3              -90.62%
BenchmarkParseInstruments/nocopy-par-32        31             2              -93.55%
BenchmarkParseMarine_ik/copy-32                466            3              -99.36%
BenchmarkParseMarine_ik/nocopy-32              466            3              -99.36%
BenchmarkParseMarine_ik/nocopy-par-32          466            3              -99.36%
BenchmarkParseMesh/copy-32                     121            3              -97.52%
BenchmarkParseMesh/nocopy-32                   121            3              -97.52%
BenchmarkParseMesh/nocopy-par-32               120            3              -97.50%
BenchmarkParseMesh_pretty/copy-32              121            3              -97.52%
BenchmarkParseMesh_pretty/nocopy-32            121            3              -97.52%
BenchmarkParseMesh_pretty/nocopy-par-32        120            3              -97.50%
BenchmarkParseNumbers/copy-32                  27             3              -88.89%
BenchmarkParseNumbers/nocopy-32                27             3              -88.89%
BenchmarkParseNumbers/nocopy-par-32            26             2              -92.31%
BenchmarkParseRandom/copy-32                   75             3              -96.00%
BenchmarkParseRandom/nocopy-32                 75             3              -96.00%
BenchmarkParseRandom/nocopy-par-32             74             2              -97.30%
BenchmarkParseTwitter/copy-32                  52             3              -94.23%
BenchmarkParseTwitter/nocopy-32                52             3              -94.23%
BenchmarkParseTwitter/nocopy-par-32            51             2              -96.08%
BenchmarkParseTwitterEscaped/copy-32           52             3              -94.23%
BenchmarkParseTwitterEscaped/nocopy-32         52             3              -94.23%
BenchmarkParseTwitterEscaped/nocopy-par-32     51             2              -96.08%
BenchmarkParseUpdate_center/copy-32            57             3              -94.74%
BenchmarkParseUpdate_center/nocopy-32          57             3              -94.74%
BenchmarkParseUpdate_center/nocopy-par-32      56             2              -96.43%
BenchmarkJsonParserLarge/nocopy-32             50             37             -26.00%

benchmark                                      old bytes     new bytes     delta
BenchmarkParseSmall/copy-32                    664           16            -97.59%
BenchmarkParseSmall/nocopy-32                  664           16            -97.59%
BenchmarkParseSmall/nocopy-par-32              660           15            -97.73%
BenchmarkParseMedium/copy-32                   664           16            -97.59%
BenchmarkParseMedium/nocopy-32                 664           16            -97.59%
BenchmarkParseMedium/nocopy-par-32             663           15            -97.74%
BenchmarkParseLarge/copy-32                    795           76            -90.44%
BenchmarkParseLarge/nocopy-32                  792           72            -90.91%
BenchmarkParseLarge/nocopy-par-32              783           64            -91.83%
BenchmarkParseApache_builds/copy-32            956           117           -87.76%
BenchmarkParseApache_builds/nocopy-32          931           86            -90.76%
BenchmarkParseApache_builds/nocopy-par-32      901           65            -92.79%
BenchmarkParseCanada/copy-32                   37406         32415         -13.34%
BenchmarkParseCanada/nocopy-32                 37400         30787         -17.68%
BenchmarkParseCanada/nocopy-par-32             39985         34793         -12.98%
BenchmarkParseCitm_catalog/copy-32             6912          3515          -49.15%
BenchmarkParseCitm_catalog/nocopy-32           5501          2652          -51.79%
BenchmarkParseCitm_catalog/nocopy-par-32       6289          3334          -46.99%
BenchmarkParseGithub_events/copy-32            801           82            -89.76%
BenchmarkParseGithub_events/nocopy-32          793           73            -90.79%
BenchmarkParseGithub_events/nocopy-par-32      783           64            -91.83%
BenchmarkParseGsoc_2018/copy-32                17884         15690         -12.27%
BenchmarkParseGsoc_2018/nocopy-32              9712          7812          -19.56%
BenchmarkParseGsoc_2018/nocopy-par-32          30098         30619         +1.73%
BenchmarkParseInstruments/copy-32              1308          206           -84.25%
BenchmarkParseInstruments/nocopy-32            1260          151           -88.02%
BenchmarkParseInstruments/nocopy-par-32        1170          69            -94.10%
BenchmarkParseMarine_ik/copy-32                173465        161947        -6.64%
BenchmarkParseMarine_ik/nocopy-32              177267        163826        -7.58%
BenchmarkParseMarine_ik/nocopy-par-32          249116        228206        -8.39%
BenchmarkParseMesh/copy-32                     14406         11167         -22.48%
BenchmarkParseMesh/nocopy-32                   14440         11062         -23.39%
BenchmarkParseMesh/nocopy-par-32               18010         12177         -32.39%
BenchmarkParseMesh_pretty/copy-32              11088         8086          -27.07%
BenchmarkParseMesh_pretty/nocopy-32            10978         8022          -26.93%
BenchmarkParseMesh_pretty/nocopy-par-32        11616         8249          -28.99%
BenchmarkParseNumbers/copy-32                  1235          248           -79.92%
BenchmarkParseNumbers/nocopy-32                1235          245           -80.16%
BenchmarkParseNumbers/nocopy-par-32            1048          73            -93.03%
BenchmarkParseRandom/copy-32                   4165          2137          -48.69%
BenchmarkParseRandom/nocopy-32                 3141          1032          -67.14%
BenchmarkParseRandom/nocopy-par-32             2467          589           -76.12%
BenchmarkParseTwitter/copy-32                  2623          1058          -59.66%
BenchmarkParseTwitter/nocopy-32                2014          432           -78.55%
BenchmarkParseTwitter/nocopy-par-32            1668          90            -94.60%
BenchmarkParseTwitterEscaped/copy-32           3028          1444          -52.31%
BenchmarkParseTwitterEscaped/nocopy-32         2509          929           -62.97%
BenchmarkParseTwitterEscaped/nocopy-par-32     1728          159           -90.80%
BenchmarkParseUpdate_center/copy-32            3337          1664          -50.13%
BenchmarkParseUpdate_center/nocopy-32          2114          417           -80.27%
BenchmarkParseUpdate_center/nocopy-par-32      1774          88            -95.04%
BenchmarkJsonParserLarge/nocopy-32             1353          634           -53.14% 

WIP: "Mesh" and "Numbers" regress significantly. Seems like a runtime sideeffect, but I will investigate.

* Re-use the channel between runs.
* Fix temp slice escaping in findStructuralIndices.

Cleanup: Don't send params already in internalParsedJson.

```
benchmark                                  old ns/op     new ns/op     delta
BenchmarkParseSmall/copy-32                1095          753           -31.20%
BenchmarkParseSmall/nocopy-32              1014          684           -32.53%
BenchmarkParseMedium/copy-32               4359          3981          -8.67%
BenchmarkParseMedium/nocopy-32             3672          3203          -12.77%
BenchmarkParseLarge/copy-32                57643         56759         -1.53%
BenchmarkParseLarge/nocopy-32              47546         45712         -3.86%
BenchmarkParseApache_builds/copy-32        140467        131633        -6.29%
BenchmarkParseApache_builds/nocopy-32      105274        96613         -8.23%
BenchmarkParseCanada/copy-32               11454566      12444019      +8.64%
BenchmarkParseCanada/nocopy-32             11440363      12444615      +8.78%
BenchmarkParseCitm_catalog/copy-32         1499697       1388706       -7.40%
BenchmarkParseCitm_catalog/nocopy-32       1209008       1176916       -2.65%
BenchmarkParseGithub_events/copy-32        71298         69322         -2.77%
BenchmarkParseGithub_events/nocopy-32      57038         54787         -3.95%
BenchmarkParseGsoc_2018/copy-32            1281316       1272766       -0.67%
BenchmarkParseGsoc_2018/nocopy-32          1026481       1011825       -1.43%
BenchmarkParseInstruments/copy-32          302662        289939        -4.20%
BenchmarkParseInstruments/nocopy-32        257394        244188        -5.13%
BenchmarkParseMarine_ik/copy-32            12879480      13697518      +6.35%
BenchmarkParseMarine_ik/nocopy-32          12551823      13322868      +6.14%
BenchmarkParseMesh/copy-32                 3825973       4120152       +7.69%
BenchmarkParseMesh/nocopy-32               3838699       4116863       +7.25%
BenchmarkParseMesh_pretty/copy-32          4310342       4594306       +6.59%
BenchmarkParseMesh_pretty/nocopy-32        4290558       4595993       +7.12%
BenchmarkParseNumbers/copy-32              741692        863226        +16.39%
BenchmarkParseNumbers/nocopy-32            741221        864157        +16.59%
BenchmarkParseRandom/copy-32               1044593       1019031       -2.45%
BenchmarkParseRandom/nocopy-32             728212        727910        -0.04%
BenchmarkParseTwitter/copy-32              604714        595169        -1.58%
BenchmarkParseTwitter/nocopy-32            456703        448870        -1.72%
BenchmarkParseTwitterEscaped/copy-32       994717        991081        -0.37%
BenchmarkParseTwitterEscaped/nocopy-32     865551        865523        -0.00%
BenchmarkParseUpdate_center/copy-32        741393        724639        -2.26%
BenchmarkParseUpdate_center/nocopy-32      515773        499503        -3.15%
BenchmarkJsonParserLarge/nocopy-32         59050         57776         -2.16%
BenchmarkParseNumber/Pos/63bit-32          82.6          86.5          +4.68%
BenchmarkParseNumber/Neg/63bit-32          84.4          88.7          +5.11%
BenchmarkParseNumberFloat-32               61.5          65.8          +6.94%
BenchmarkParseAtof64FloatGolang-32         32.4          32.7          +0.96%
BenchmarkParseNumberFloatExp-32            70.4          71.9          +2.09%
BenchmarkParseNumberBig-32                 131           147           +11.73%
BenchmarkParseNumberRandomBits-32          140           153           +9.67%
BenchmarkParseNumberRandomFloats-32        122           123           +1.15%
BenchmarkParseIntGolang/Pos/63bit-32       29.8          29.9          +0.60%
BenchmarkParseIntGolang/Neg/63bit-32       30.1          30.4          +1.23%

benchmark                                  old MB/s     new MB/s     speedup
BenchmarkParseSmall/copy-32                172.58       250.88       1.45x
BenchmarkParseSmall/nocopy-32              186.38       276.26       1.48x
BenchmarkParseMedium/copy-32               534.13       584.79       1.09x
BenchmarkParseMedium/nocopy-32             634.04       726.72       1.15x
BenchmarkParseLarge/copy-32                487.78       495.38       1.02x
BenchmarkParseLarge/nocopy-32              591.36       615.09       1.04x
BenchmarkParseApache_builds/copy-32        906.08       966.89       1.07x
BenchmarkParseApache_builds/nocopy-32      1208.99      1317.37      1.09x
BenchmarkParseCanada/copy-32               196.52       180.89       0.92x
BenchmarkParseCanada/nocopy-32             196.76       180.89       0.92x
BenchmarkParseCitm_catalog/copy-32         1151.70      1243.75      1.08x
BenchmarkParseCitm_catalog/nocopy-32       1428.61      1467.57      1.03x
BenchmarkParseGithub_events/copy-32        913.52       939.55       1.03x
BenchmarkParseGithub_events/nocopy-32      1141.90      1188.83      1.04x
BenchmarkParseGsoc_2018/copy-32            2597.20      2614.64      1.01x
BenchmarkParseGsoc_2018/nocopy-32          3241.98      3288.94      1.01x
BenchmarkParseInstruments/copy-32          728.03       759.97       1.04x
BenchmarkParseInstruments/nocopy-32        856.06       902.36       1.05x
BenchmarkParseMarine_ik/copy-32            231.64       217.81       0.94x
BenchmarkParseMarine_ik/nocopy-32          237.69       223.94       0.94x
BenchmarkParseMesh/copy-32                 189.13       175.62       0.93x
BenchmarkParseMesh/nocopy-32               188.50       175.76       0.93x
BenchmarkParseMesh_pretty/copy-32          365.95       343.33       0.94x
BenchmarkParseMesh_pretty/nocopy-32        367.63       343.20       0.93x
BenchmarkParseNumbers/copy-32              202.41       173.91       0.86x
BenchmarkParseNumbers/nocopy-32            202.54       173.72       0.86x
BenchmarkParseRandom/copy-32               488.68       500.94       1.03x
BenchmarkParseRandom/nocopy-32             701.00       701.29       1.00x
BenchmarkParseTwitter/copy-32              1044.32      1061.07      1.02x
BenchmarkParseTwitter/nocopy-32            1382.77      1406.90      1.02x
BenchmarkParseTwitterEscaped/copy-32       565.40       567.47       1.00x
BenchmarkParseTwitterEscaped/nocopy-32     649.77       649.79       1.00x
BenchmarkParseUpdate_center/copy-32        719.16       735.78       1.02x
BenchmarkParseUpdate_center/nocopy-32      1033.75      1067.42      1.03x
BenchmarkJsonParserLarge/nocopy-32         476.16       486.66       1.02x

benchmark                                  old allocs     new allocs     delta
BenchmarkParseSmall/copy-32                11             1              -90.91%
BenchmarkParseSmall/nocopy-32              11             1              -90.91%
BenchmarkParseMedium/copy-32               11             1              -90.91%
BenchmarkParseMedium/nocopy-32             11             1              -90.91%
BenchmarkParseLarge/copy-32                16             3              -81.25%
BenchmarkParseLarge/nocopy-32              16             3              -81.25%
BenchmarkParseApache_builds/copy-32        21             3              -85.71%
BenchmarkParseApache_builds/nocopy-32      21             3              -85.71%
BenchmarkParseCanada/copy-32               249            3              -98.80%
BenchmarkParseCanada/nocopy-32             249            3              -98.80%
BenchmarkParseCitm_catalog/copy-32         109            3              -97.25%
BenchmarkParseCitm_catalog/nocopy-32       109            3              -97.25%
BenchmarkParseGithub_events/copy-32        16             3              -81.25%
BenchmarkParseGithub_events/nocopy-32      16             3              -81.25%
BenchmarkParseGsoc_2018/copy-32            66             3              -95.45%
BenchmarkParseGsoc_2018/nocopy-32          66             3              -95.45%
BenchmarkParseInstruments/copy-32          32             3              -90.62%
BenchmarkParseInstruments/nocopy-32        32             3              -90.62%
BenchmarkParseMarine_ik/copy-32            466            3              -99.36%
BenchmarkParseMarine_ik/nocopy-32          466            3              -99.36%
BenchmarkParseMesh/copy-32                 121            3              -97.52%
BenchmarkParseMesh/nocopy-32               121            3              -97.52%
BenchmarkParseMesh_pretty/copy-32          121            3              -97.52%
BenchmarkParseMesh_pretty/nocopy-32        121            3              -97.52%
BenchmarkParseNumbers/copy-32              27             3              -88.89%
BenchmarkParseNumbers/nocopy-32            27             3              -88.89%
BenchmarkParseRandom/copy-32               75             3              -96.00%
BenchmarkParseRandom/nocopy-32             75             3              -96.00%
BenchmarkParseTwitter/copy-32              52             3              -94.23%
BenchmarkParseTwitter/nocopy-32            52             3              -94.23%
BenchmarkParseTwitterEscaped/copy-32       52             3              -94.23%
BenchmarkParseTwitterEscaped/nocopy-32     52             3              -94.23%
BenchmarkParseUpdate_center/copy-32        57             3              -94.74%
BenchmarkParseUpdate_center/nocopy-32      57             3              -94.74%
BenchmarkJsonParserLarge/nocopy-32         50             37             -26.00%

benchmark                                  old bytes     new bytes     delta
BenchmarkParseSmall/copy-32                664           16            -97.59%
BenchmarkParseSmall/nocopy-32              664           16            -97.59%
BenchmarkParseMedium/copy-32               664           16            -97.59%
BenchmarkParseMedium/nocopy-32             664           16            -97.59%
BenchmarkParseLarge/copy-32                796           75            -90.58%
BenchmarkParseLarge/nocopy-32              792           71            -91.04%
BenchmarkParseApache_builds/copy-32        959           115           -88.01%
BenchmarkParseApache_builds/nocopy-32      931           86            -90.76%
BenchmarkParseCanada/copy-32               37405         32413         -13.35%
BenchmarkParseCanada/nocopy-32             37403         30778         -17.71%
BenchmarkParseCitm_catalog/copy-32         6426          3189          -50.37%
BenchmarkParseCitm_catalog/nocopy-32       5404          2402          -55.55%
BenchmarkParseGithub_events/copy-32        801           81            -89.89%
BenchmarkParseGithub_events/nocopy-32      793           73            -90.79%
BenchmarkParseGsoc_2018/copy-32            17642         15540         -11.91%
BenchmarkParseGsoc_2018/nocopy-32          9844          7733          -21.44%
BenchmarkParseInstruments/copy-32          1303          196           -84.96%
BenchmarkParseInstruments/nocopy-32        1256          143           -88.61%
BenchmarkParseMarine_ik/copy-32            177273        176118        -0.65%
BenchmarkParseMarine_ik/nocopy-32          173463        165752        -4.45%
BenchmarkParseMesh/copy-32                 14516         12118         -16.52%
BenchmarkParseMesh/nocopy-32               14545         12117         -16.69%
BenchmarkParseMesh_pretty/copy-32          11148         8389          -24.75%
BenchmarkParseMesh_pretty/nocopy-32        11088         8421          -24.05%
BenchmarkParseNumbers/copy-32              1238          286           -76.90%
BenchmarkParseNumbers/nocopy-32            1237          283           -77.12%
BenchmarkParseRandom/copy-32               4159          1966          -52.73%
BenchmarkParseRandom/nocopy-32             3143          1013          -67.77%
BenchmarkParseTwitter/copy-32              2585          973           -62.36%
BenchmarkParseTwitter/nocopy-32            2016          420           -79.17%
BenchmarkParseTwitterEscaped/copy-32       3005          1424          -52.61%
BenchmarkParseTwitterEscaped/nocopy-32     2506          918           -63.37%
BenchmarkParseUpdate_center/copy-32        3298          1541          -53.27%
BenchmarkParseUpdate_center/nocopy-32      2122          404           -80.96%
BenchmarkJsonParserLarge/nocopy-32         1353          633           -53.22%
```
@klauspost klauspost marked this pull request as draft December 6, 2021 14:08
@klauspost klauspost marked this pull request as ready for review December 7, 2021 08:34
@harshavardhana harshavardhana merged commit 68d6648 into minio:master Jan 25, 2022
@klauspost klauspost deleted the improve-paring-allocs branch January 26, 2022 09:49
@@ -28,7 +28,7 @@ import (
func (pj *internalParsedJson) initialize(size int) {
// Estimate the tape size to be about 15% of the length of the JSON message
avgTapeSize := size * 15 / 100
if cap(pj.Tape) < avgTapeSize {
if cap(pj.Tape) <= avgTapeSize {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@klauspost Was this an intentional change? Allocating a new tape with a cap of avgTapeSize when the existing tape has a cap of avgTapeSize doesn't seem desirable.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vcabbage You are right. Let me test it out.

klauspost added a commit to klauspost/simdjson-go-1 that referenced this pull request Feb 24, 2022
klauspost added a commit that referenced this pull request Feb 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants