This page records optional benchmark results for RJSONIO
and direct JSON package competitors. The benchmark scripts are kept in
the GitHub repository under benchmarks/ and are excluded
from CRAN package builds.
The numbers are machine-specific. They are useful for checking relative behavior on one system, but should be rerun locally before making performance claims. Smaller elapsed-time and memory values are better.
| package | installed | version |
|---|---|---|
| RJSONIO | TRUE | 2.0.3 |
| jsonlite | TRUE | 1.8.9 |
| rjson | TRUE | 0.2.23 |
| yyjsonr | TRUE | 0.1.22 |
| jsonify | TRUE | 1.2.3 |
| RcppSimdJson | TRUE | 0.1.15 |
| rjsoncons | TRUE | 1.3.2 |
| field | value |
|---|---|
| date | 2026-05-14 18:59:29.023637 |
| r_version | R version 4.4.2 (2024-10-31 ucrt) |
| platform | x86_64-w64-mingw32 |
| iterations | 20 |
Benchmark Tasks
The benchmark suite compares supported operations across the direct competitor set:
- parse JSON from a string;
- parse JSON from a file;
- write JSON from R objects;
- validate JSON syntax;
- round-trip R objects through JSON.
The payloads include a numeric vector, a data frame, and a nested list. Packages that do not support a given operation are skipped for that operation.
Summary
The summary heatmap is the main comparison. Each cell reports median
elapsed time as a ratio to RJSONIO, followed by the
absolute median elapsed time. Blue cells are faster than
RJSONIO for the same task and payload; orange cells are
slower. A value of 1.00x is the RJSONIO
baseline.

Elapsed Time
These bars show the same median timings in milliseconds.
RJSONIO bars are shown in the darker color.

Memory Allocation
These bars show memory allocated by the measured expression.
RJSONIO bars are shown in the darker color.

Relative Elapsed Time
This chart uses RJSONIO = 1.00x for each task and
payload. Values below 1.00x are faster than
RJSONIO; values above 1.00x are slower.

Skipped Operations
| package | payload | job | reason |
|---|---|---|---|
| rjson | numeric_vector | validate_json | operation is not supported by adapter |
| rjson | data_frame | validate_json | operation is not supported by adapter |
| rjson | nested_list | validate_json | operation is not supported by adapter |
| jsonify | numeric_vector | parse_file | operation is not supported by adapter |
| jsonify | data_frame | parse_file | operation is not supported by adapter |
| jsonify | nested_list | parse_file | operation is not supported by adapter |
| RcppSimdJson | numeric_vector | write_json | operation is not supported by adapter |
| RcppSimdJson | numeric_vector | validate_json | operation is not supported by adapter |
| RcppSimdJson | numeric_vector | roundtrip | operation is not supported by adapter |
| RcppSimdJson | data_frame | write_json | operation is not supported by adapter |
| RcppSimdJson | data_frame | validate_json | operation is not supported by adapter |
| RcppSimdJson | data_frame | roundtrip | operation is not supported by adapter |
| RcppSimdJson | nested_list | write_json | operation is not supported by adapter |
| RcppSimdJson | nested_list | validate_json | operation is not supported by adapter |
| RcppSimdJson | nested_list | roundtrip | operation is not supported by adapter |
| rjsoncons | numeric_vector | write_json | operation is not supported by adapter |
| rjsoncons | numeric_vector | validate_json | operation is not supported by adapter |
| rjsoncons | numeric_vector | roundtrip | operation is not supported by adapter |
| rjsoncons | data_frame | write_json | operation is not supported by adapter |
| rjsoncons | data_frame | validate_json | operation is not supported by adapter |
| rjsoncons | data_frame | roundtrip | operation is not supported by adapter |
| rjsoncons | nested_list | write_json | operation is not supported by adapter |
| rjsoncons | nested_list | validate_json | operation is not supported by adapter |
| rjsoncons | nested_list | roundtrip | operation is not supported by adapter |
Reproducing
Run the benchmarks from the repository root:
source("benchmarks/run-benchmarks.R")The script writes CSV files to benchmarks/results/ and
plots to benchmarks/figures/. It also copies the current
benchmark artifacts used by this page to
vignettes/figures/benchmarks/.