8000 Updating the performance numbers. (#634) · JavaScriptExpert/simdjson@1b6a31b · GitHub
[go: up one dir, main page]

Skip to content

Commit 1b6a31b

Browse files
authored
Updating the performance numbers. (simdjson#634)
* Updating the performance numbers. * Updating with growing file sizes.
1 parent 2e42016 commit 1b6a31b

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

README.md

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,47 @@ The simdjson library uses three-quarters less instructions than state-of-the-art
7676
fifty percent less than sajson. To our knowledge, simdjson is the first fully-validating JSON parser
7777
to run at gigabytes per second on commodity processors.
7878
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+
7991
<img src="doc/gbps.png" width="90%">
8092
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.
8394
8495
| parser | GB/s |
8596
| ------------------------------------- | ---- |
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).
98120
99121
Real-world usage
100122
----------------

doc/gbps.png

18.2 KB
Loading

doc/growing.png

44.5 KB
Loading

0 commit comments

Comments
 (0)
0