Skip to contents

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.

Packages included in the benchmark run
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
Benchmark environment
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

Skipped packages or 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/.