Skip to content

Instantly share code, notes, and snippets.

@mswilson
Last active December 9, 2019 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mswilson/fa94deae86dde2c4871e4acd052fea07 to your computer and use it in GitHub Desktop.
Save mswilson/fa94deae86dde2c4871e4acd052fea07 to your computer and use it in GitHub Desktop.
simdjson parser.sh run on m6g.16xlarge on Ubuntu Bionic ami-03f3d98d9ddb32a79, slightly tuned
# compiled with Cxx=g++-9 ARCHFLAGS="-march=armv8.5-a+crc -mtune=neoverse-n1 -ffast-math"
# switched from utf8_fastvalidate_algorithm.h to utf8_lookup_algorithm.h
jsonexamples/apache_builds.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.816 GB/s (error margin: 0.004 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.102 GB/s (error margin: 0.007 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.100 GB/s (error margin: 0.011 GB/s)
RapidJSON : 0.003 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.304 GB/s (error margin: 0.021 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.370 GB/s (error margin: 0.007 GB/s)
sajson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.710 GB/s (error margin: 0.006 GB/s)
sajson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.825 GB/s (error margin: 0.004 GB/s)
nlohmann-json : 0.015 (clock units) per input byte (best) 0.015 (clock units) per input byte (avg) 0.068 GB/s (error margin: 0.003 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 31.851 GB/s (error margin: 0.305 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 295043 instructions 859041 branchmisses 186 cacheref 167048 cachemisses 3571 bytespercachemiss 685 inspercycle 2.9 insperbyte 6.7
RapidJSON: cycles 886249 instructions 2286851 branchmisses 3714 cacheref 638140 cachemisses 5470 bytespercachemiss 34 inspercycle 2.6 insperbyte 18.0
sajson : cycles 390603 instructions 1099092 branchmisses 1890 cacheref 401439 cachemisses 3394 bytespercachemiss 67 inspercycle 2.8 insperbyte 8.6
jsonexamples/canada.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 12.809 GB/s (error margin: 3.493 GB/s)
simdjson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.557 GB/s (error margin: 0.027 GB/s)
simdjson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.559 GB/s (error margin: 0.015 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.280 GB/s (error margin: 0.019 GB/s)
RapidJSON (insitu) : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.256 GB/s (error margin: 0.000 GB/s)
sajson (dynamic mem) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.362 GB/s (error margin: 0.010 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.444 GB/s (error margin: 0.007 GB/s)
nlohmann-json : 0.027 (clock units) per input byte (best) 0.027 (clock units) per input byte (avg) 0.037 GB/s (error margin: 0.000 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 18.381 GB/s (error margin: 0.336 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 10126442 instructions 29734722 branchmisses 17222 cacheref 4698231 cachemisses 24174 bytespercachemiss 131 inspercycle 2.9 insperbyte 13.2
RapidJSON: cycles 21764033 instructions 62237354 branchmisses 15726 cacheref 14716771 cachemisses 125227 bytespercachemiss 143 inspercycle 2.9 insperbyte 27.6
sajson : cycles 12740405 instructions 44251412 branchmisses 12800 cacheref 5568750 cachemisses 54194 bytespercachemiss 176 inspercycle 3.5 insperbyte 19.7
jsonexamples/citm_catalog.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.922 GB/s (error margin: 0.003 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.257 GB/s (error margin: 0.082 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.260 GB/s (error margin: 0.043 GB/s)
RapidJSON : 0.002 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.416 GB/s (error margin: 0.018 GB/s)
RapidJSON (insitu) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.443 GB/s (error margin: 0.002 GB/s)
sajson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.692 GB/s (error margin: 0.018 GB/s)
sajson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.808 GB/s (error margin: 0.013 GB/s)
nlohmann-json : 0.012 (clock units) per input byte (best) 0.012 (clock units) per input byte (avg) 0.086 GB/s (error margin: 0.001 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 17.773 GB/s (error margin: 0.347 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 3448630 instructions 9927063 branchmisses 2072 cacheref 1699378 cachemisses 22064 bytespercachemiss 834 inspercycle 2.9 insperbyte 5.7
RapidJSON: cycles 9907763 instructions 23891872 branchmisses 76619 cacheref 6693215 cachemisses 59731 bytespercachemiss 23 inspercycle 2.4 insperbyte 13.8
sajson : cycles 5370558 instructions 17004187 branchmisses 4567 cacheref 4845506 cachemisses 35180 bytespercachemiss 378 inspercycle 3.2 insperbyte 9.8
jsonexamples/github_events.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.117 GB/s (error margin: 0.016 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.183 GB/s (error margin: 0.011 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.195 GB/s (error margin: 0.008 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.273 GB/s (error margin: 0.011 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.400 GB/s (error margin: 0.010 GB/s)
sajson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.672 GB/s (error margin: 0.006 GB/s)
sajson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.760 GB/s (error margin: 0.006 GB/s)
nlohmann-json : 0.014 (clock units) per input byte (best) 0.015 (clock units) per input byte (avg) 0.069 GB/s (error margin: 0.002 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 28.769 GB/s (error margin: 0.566 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 139992 instructions 383983 branchmisses 222 cacheref 68999 cachemisses 1806 bytespercachemiss 293 inspercycle 2.7 insperbyte 5.9
RapidJSON: cycles 426406 instructions 1077035 branchmisses 2365 cacheref 280339 cachemisses 2151 bytespercachemiss 28 inspercycle 2.5 insperbyte 16.5
sajson : cycles 219776 instructions 576234 branchmisses 1191 cacheref 201787 cachemisses 1478 bytespercachemiss 55 inspercycle 2.6 insperbyte 8.8
jsonexamples/gsoc-2018.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 2.848 GB/s (error margin: 0.018 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.590 GB/s (error margin: 0.151 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.591 GB/s (error margin: 0.079 GB/s)
RapidJSON : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.338 GB/s (error margin: 0.005 GB/s)
RapidJSON (insitu) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.509 GB/s (error margin: 0.001 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.573 GB/s (error margin: 0.006 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.594 GB/s (error margin: 0.004 GB/s)
nlohmann-json : 0.011 (clock units) per input byte (best) 0.012 (clock units) per input byte (avg) 0.087 GB/s (error margin: 0.002 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 17.464 GB/s (error margin: 0.240 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 5275764 instructions 13341445 branchmisses 19038 cacheref 1813442 cachemisses 65559 bytespercachemiss 175 inspercycle 2.5 insperbyte 4.0
RapidJSON: cycles 16577852 instructions 46617317 branchmisses 51077 cacheref 9142990 cachemisses 49633 bytespercachemiss 65 inspercycle 2.8 insperbyte 14.0
sajson : cycles 14058049 instructions 31899394 branchmisses 29050 cacheref 7815051 cachemisses 35290 bytespercachemiss 115 inspercycle 2.3 insperbyte 9.6
jsonexamples/instruments.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.743 GB/s (error margin: 0.003 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.058 GB/s (error margin: 0.007 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.061 GB/s (error margin: 0.007 GB/s)
RapidJSON : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.302 GB/s (error margin: 0.012 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.336 GB/s (error margin: 0.003 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.576 GB/s (error margin: 0.004 GB/s)
sajson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.679 GB/s (error margin: 0.003 GB/s)
nlohmann-json : 0.015 (clock units) per input byte (best) 0.015 (clock units) per input byte (avg) 0.068 GB/s (error margin: 0.002 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 34.559 GB/s (error margin: 0.469 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 526072 instructions 1567187 branchmisses 632 cacheref 307260 cachemisses 5836 bytespercachemiss 349 inspercycle 3.0 insperbyte 7.1
RapidJSON: cycles 1664127 instructions 4067445 branchmisses 9087 cacheref 1278059 cachemisses 8978 bytespercachemiss 24 inspercycle 2.4 insperbyte 18.5
sajson : cycles 817841 instructions 2542798 branchmisses 931 cacheref 812702 cachemisses 5963 bytespercachemiss 237 inspercycle 3.1 insperbyte 11.5
jsonexamples/marine_ik.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.497 GB/s (error margin: 0.010 GB/s)
simdjson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.535 GB/s (error margin: 0.038 GB/s)
simdjson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.533 GB/s (error margin: 0.019 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.005 (clock units) per input byte (avg) 0.239 GB/s (error margin: 0.018 GB/s)
RapidJSON (insitu) : 0.005 (clock units) per input byte (best) 0.005 (clock units) per input byte (avg) 0.222 GB/s (error margin: 0.001 GB/s)
sajson (dynamic mem) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.322 GB/s (error margin: 0.010 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.420 GB/s (error margin: 0.009 GB/s)
nlohmann-json : 0.022 (clock units) per input byte (best) 0.022 (clock units) per input byte (avg) 0.045 GB/s (error margin: 0.001 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 17.761 GB/s (error margin: 0.272 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 14079992 instructions 40328870 branchmisses 50793 cacheref 7411108 cachemisses 83119 bytespercachemiss 59 inspercycle 2.9 insperbyte 13.5
RapidJSON: cycles 33390262 instructions 85856559 branchmisses 76652 cacheref 27304111 cachemisses 276462 bytespercachemiss 39 inspercycle 2.6 insperbyte 28.8
sajson : cycles 17823410 instructions 57252094 branchmisses 43331 cacheref 11051398 cachemisses 109386 bytespercachemiss 69 inspercycle 3.2 insperbyte 19.2
jsonexamples/mesh.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 13.452 GB/s (error margin: 0.440 GB/s)
simdjson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.533 GB/s (error margin: 0.004 GB/s)
simdjson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.533 GB/s (error margin: 0.004 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.005 (clock units) per input byte (avg) 0.229 GB/s (error margin: 0.014 GB/s)
RapidJSON (insitu) : 0.005 (clock units) per input byte (best) 0.005 (clock units) per input byte (avg) 0.213 GB/s (error margin: 0.003 GB/s)
sajson (dynamic mem) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.301 GB/s (error margin: 0.007 GB/s)
sajson : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.379 GB/s (error margin: 0.002 GB/s)
nlohmann-json : 0.022 (clock units) per input byte (best) 0.022 (clock units) per input byte (avg) 0.046 GB/s (error margin: 0.000 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 26.953 GB/s (error margin: 1.433 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 3426208 instructions 10294065 branchmisses 8829 cacheref 1639557 cachemisses 9722 bytespercachemiss 82 inspercycle 3.0 insperbyte 14.2
RapidJSON: cycles 8581307 instructions 22906438 branchmisses 17325 cacheref 6568395 cachemisses 74216 bytespercachemiss 42 inspercycle 2.7 insperbyte 31.7
sajson : cycles 4805358 instructions 15986495 branchmisses 11744 cacheref 2197721 cachemisses 23690 bytespercachemiss 62 inspercycle 3.3 insperbyte 22.1
jsonexamples/mesh.pretty.json
getline : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.611 GB/s (error margin: 0.002 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.825 GB/s (error margin: 0.046 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.826 GB/s (error margin: 0.027 GB/s)
RapidJSON : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.379 GB/s (error margin: 0.018 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.357 GB/s (error margin: 0.001 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.483 GB/s (error margin: 0.012 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.573 GB/s (error margin: 0.009 GB/s)
nlohmann-json : 0.014 (clock units) per input byte (best) 0.014 (clock units) per input byte (avg) 0.072 GB/s (error margin: 0.000 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 18.433 GB/s (error margin: 0.532 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 4839609 instructions 13407225 branchmisses 13360 cacheref 1859864 cachemisses 12421 bytespercachemiss 118 inspercycle 2.8 insperbyte 8.5
RapidJSON: cycles 10942972 instructions 30000609 branchmisses 21789 cacheref 7433894 cachemisses 87576 bytespercachemiss 72 inspercycle 2.7 insperbyte 19.0
sajson : cycles 6911290 instructions 21727167 branchmisses 15142 cacheref 3808692 cachemisses 32877 bytespercachemiss 104 inspercycle 3.1 insperbyte 13.8
jsonexamples/numbers.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 13.210 GB/s (error margin: 0.164 GB/s)
simdjson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.613 GB/s (error margin: 0.004 GB/s)
simdjson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.613 GB/s (error margin: 0.003 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.271 GB/s (error margin: 0.009 GB/s)
RapidJSON (insitu) : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.265 GB/s (error margin: 0.007 GB/s)
sajson (dynamic mem) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.398 GB/s (error margin: 0.003 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.474 GB/s (error margin: 0.002 GB/s)
nlohmann-json : 0.024 (clock units) per input byte (best) 0.024 (clock units) per input byte (avg) 0.041 GB/s (error margin: 0.000 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 33.031 GB/s (error margin: 0.405 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 618348 instructions 1815885 branchmisses 2183 cacheref 255176 cachemisses 1532 bytespercachemiss 69 inspercycle 2.9 insperbyte 12.1
RapidJSON: cycles 1452205 instructions 4018561 branchmisses 3062 cacheref 915838 cachemisses 11325 bytespercachemiss 49 inspercycle 2.8 insperbyte 26.8
sajson : cycles 797970 instructions 2685352 branchmisses 2011 cacheref 335657 cachemisses 3121 bytespercachemiss 75 inspercycle 3.4 insperbyte 17.9
jsonexamples/random.json
getline : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.441 GB/s (error margin: 0.002 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.697 GB/s (error margin: 0.007 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.698 GB/s (error margin: 0.005 GB/s)
RapidJSON : 0.005 (clock units) per input byte (best) 0.005 (clock units) per input byte (avg) 0.211 GB/s (error margin: 0.010 GB/s)
RapidJSON (insitu) : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.257 GB/s (error margin: 0.002 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.422 GB/s (error margin: 0.003 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.509 GB/s (error margin: 0.002 GB/s)
nlohmann-json : 0.022 (clock units) per input byte (best) 0.022 (clock units) per input byte (avg) 0.046 GB/s (error margin: 0.001 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 34.260 GB/s (error margin: 1.878 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 1845882 instructions 5393399 branchmisses 3240 cacheref 1173886 cachemisses 21506 bytespercachemiss 158 inspercycle 2.9 insperbyte 10.6
RapidJSON: cycles 5008747 instructions 12506867 branchmisses 21579 cacheref 4026649 cachemisses 28015 bytespercachemiss 24 inspercycle 2.5 insperbyte 24.5
sajson : cycles 2523622 instructions 7350561 branchmisses 12748 cacheref 2234262 cachemisses 18035 bytespercachemiss 40 inspercycle 2.9 insperbyte 14.4
jsonexamples/twitter.json
getline : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.035 GB/s (error margin: 0.004 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.105 GB/s (error margin: 0.006 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 1.108 GB/s (error margin: 0.005 GB/s)
RapidJSON : 0.003 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.288 GB/s (error margin: 0.014 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.362 GB/s (error margin: 0.003 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.612 GB/s (error margin: 0.005 GB/s)
sajson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.693 GB/s (error margin: 0.004 GB/s)
nlohmann-json : 0.015 (clock units) per input byte (best) 0.016 (clock units) per input byte (avg) 0.065 GB/s (error margin: 0.004 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 29.522 GB/s (error margin: 1.444 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 1436742 instructions 4036067 branchmisses 2482 cacheref 747229 cachemisses 16235 bytespercachemiss 254 inspercycle 2.8 insperbyte 6.4
RapidJSON: cycles 4404833 instructions 10210505 branchmisses 36928 cacheref 3092174 cachemisses 20999 bytespercachemiss 17 inspercycle 2.3 insperbyte 16.2
sajson : cycles 2305481 instructions 6748114 branchmisses 7777 cacheref 2142887 cachemisses 12831 bytespercachemiss 81 inspercycle 2.9 insperbyte 10.7
jsonexamples/twitterescaped.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 13.797 GB/s (error margin: 0.398 GB/s)
simdjson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.604 GB/s (error margin: 0.005 GB/s)
simdjson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.605 GB/s (error margin: 0.004 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.232 GB/s (error margin: 0.008 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.320 GB/s (error margin: 0.003 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.501 GB/s (error margin: 0.003 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.557 GB/s (error margin: 0.004 GB/s)
nlohmann-json : 0.017 (clock units) per input byte (best) 0.018 (clock units) per input byte (avg) 0.059 GB/s (error margin: 0.004 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 30.946 GB/s (error margin: 1.621 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 2347560 instructions 6007975 branchmisses 3927 cacheref 1224031 cachemisses 17553 bytespercachemiss 143 inspercycle 2.6 insperbyte 10.7
RapidJSON: cycles 4454025 instructions 10053263 branchmisses 41214 cacheref 2927731 cachemisses 20651 bytespercachemiss 14 inspercycle 2.3 insperbyte 17.9
sajson : cycles 2557244 instructions 7153514 branchmisses 20666 cacheref 1944593 cachemisses 11831 bytespercachemiss 27 inspercycle 2.8 insperbyte 12.7
jsonexamples/update-center.json
getline : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 13.395 GB/s (error margin: 0.393 GB/s)
simdjson (dynamic mem) : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.924 GB/s (error margin: 0.010 GB/s)
simdjson : 0.001 (clock units) per input byte (best) 0.001 (clock units) per input byte (avg) 0.924 GB/s (error margin: 0.010 GB/s)
RapidJSON : 0.004 (clock units) per input byte (best) 0.004 (clock units) per input byte (avg) 0.237 GB/s (error margin: 0.011 GB/s)
RapidJSON (insitu) : 0.003 (clock units) per input byte (best) 0.003 (clock units) per input byte (avg) 0.295 GB/s (error margin: 0.002 GB/s)
sajson (dynamic mem) : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.520 GB/s (error margin: 0.004 GB/s)
sajson : 0.002 (clock units) per input byte (best) 0.002 (clock units) per input byte (avg) 0.620 GB/s (error margin: 0.003 GB/s)
nlohmann-json : 0.018 (clock units) per input byte (best) 0.020 (clock units) per input byte (avg) 0.056 GB/s (error margin: 0.006 GB/s)
memcpy : 0.000 (clock units) per input byte (best) 0.000 (clock units) per input byte (avg) 31.316 GB/s (error margin: 1.569 GB/s)
<doing additional analysis with performance counters (Linux only)>
simdjson : cycles 1465312 instructions 4015391 branchmisses 5176 cacheref 871426 cachemisses 19339 bytespercachemiss 103 inspercycle 2.7 insperbyte 7.5
RapidJSON: cycles 4546193 instructions 10909762 branchmisses 28382 cacheref 3242129 cachemisses 21308 bytespercachemiss 19 inspercycle 2.4 insperbyte 20.5
sajson : cycles 2170723 instructions 5729592 branchmisses 18692 cacheref 2173802 cachemisses 16269 bytespercachemiss 29 inspercycle 2.6 insperbyte 10.7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment