You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+36-14Lines changed: 36 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -76,25 +76,47 @@ The simdjson library uses three-quarters less instructions than state-of-the-art
76
76
fifty percent less than sajson. To our knowledge, simdjson is the first fully-validating JSON parser
77
77
to run at gigabytes per second on commodity processors.
78
78
79
+
The following figure represents parsing speed in GB/s for parsing various files
80
+
on an Intel Skylake processor (3.4 GHz) using the GNU GCC 9 compiler (with the -O3 flag).
81
+
We compare against the best and fastest C++ libraries.
82
+
The simdjson library offers full unicode (UTF-8) validation and exact
83
+
number parsing. The RapidJSON library is tested in two modes: fast and
84
+
exact number parsing. The sajson library offers fast (but not exact)
85
+
number parsing and partial unicode val
8000
idation. In this data set, the file
86
+
sizes range from 65KB (github_events) all the way to 3.3GB (gsoc-2018).
87
+
Many files are mostly made of numbers: canada, mesh.pretty, mesh, random
88
+
and numbers: in such instances, we see lower JSON parsing speeds due to the
89
+
high cost of number parsing.
90
+
79
91
<img src="doc/gbps.png" width="90%">
80
92
81
-
On a Skylake processor, the parsing speeds (in GB/s) of various processors on the twitter.json file
82
-
are as follows.
93
+
On a Skylake processor, the parsing speeds (in GB/s) of various processors on the twitter.json file are as follows, using again GNU GCC 9.1 (with the -O3 flag). The popular JSON for Modern C++ library is particularly slow: it obviously trades parsing speed for other desirable features.
83
94
84
95
| parser | GB/s |
85
96
| ------------------------------------- | ---- |
86
-
| simdjson | 2.2 |
87
-
| RapidJSON encoding-validation | 0.51 |
88
-
| RapidJSON encoding-validation, insitu | 0.71 |
89
-
| sajson (insitu, dynamic) | 0.70 |
90
-
| sajson (insitu, static) | 0.97 |
91
-
| dropbox | 0.14 |
92
-
| fastjson | 0.26 |
93
-
| gason | 0.85 |
94
-
| ultrajson | 0.42 |
95
-
| jsmn | 0.28 |
96
-
| cJSON | 0.34 |
97
-
| JSON for Modern C++ (nlohmann/json) | 0.10 |
97
+
| simdjson | 2.5 |
98
+
| RapidJSON UTF8-validation | 0.29 |
99
+
| RapidJSON UTF8-valid., exact numbers | 0.28 |
100
+
| RapidJSON insitu, UTF8-validation | 0.41 |
101
+
| RapidJSON insitu, UTF8-valid., exact | 0.39 |
102
+
| sajson (insitu, dynamic) | 0.62 |
103
+
| sajson (insitu, static) | 0.88 |
104
+
| dropbox | 0.13 |
105
+
| fastjson | 0.27 |
106
+
| gason | 0.59 |
107
+
| ultrajson | 0.34 |
108
+
| jsmn | 0.25 |
109
+
| cJSON | 0.31 |
110
+
| JSON for Modern C++ (nlohmann/json) | 0.11 |
111
+
112
+
113
+
The simdjson library offer high speed whether it processes tiny files (e.g., 300 bytes)
114
+
or larger files (e.g., 3MB). The following plot presents parsing
115
+
speed for [synthetic files over various sizes generated with a script](https://github.com/simdjson/simdjson_experiments_vldb2019/blob/master/experiments/growing/gen.py) on a 3.4 GHz Skylake processor (GNU GCC 9, -O3).
116
+
<img src="doc/growing.png" width="90%">
117
+
118
+
119
+
[All our experiments are reproducible](https://github.com/simdjson/simdjson_experiments_vldb2019).
0 commit comments