Skip to content

Performance

This page lists what JSON Digger’s own benchmarks measured in release builds, so you can judge how the app behaves on files of the size you work with. Every number below is a single run on generated test files, on one desktop machine: a 10-core Intel Core i9-10850K, 32 GB of RAM, SSD storage, Windows 10. “Warm” means the file was already in the operating system’s page cache; “cold” means it was read from disk. Your times scale mainly with disk speed and file size.

JSON Digger shows the first content of a file before the whole file is indexed: on the files below, the tree appears in under 20 ms, and the full index is built in the background. See How large files open for what you can do meanwhile.

The table lists the time of the full index:

File Size Full index Throughput
Single-line JSON array 1.1 GB 1.4 s 815 MB/s
Pretty-printed JSON array 1 GB 1.0 s 1,031 MB/s
NDJSON, 3.47 million records 1 GB 1.1 s 970 MB/s

The index is saved to disk after the first open. Reopening the same unchanged file loads it instead of scanning again: a 9 GB file that took 16.5 s to index cold reopened in 53 ms.

The app’s own memory stays small as files grow:

File size App’s own memory after indexing
16 MB 0.2 MB
1.1 GB 5 to 6 MB
8.7 GB 19 MB
10 GB 22 MB

Task Manager can show a larger number, because it also counts the parts of the file the system keeps in its cache. The system frees that cache when other programs need memory.

Measured on the 1.1 GB single-line JSON array, warm, with a literal search:

Operation Time
First hit shown 3 ms
Full scan of the file 31 ms
Same search run again 0.02 ms

Search streams results while it scans, so the first hit appears before the scan ends. A regex search is slower than a literal one: a pattern with no fixed prefix, such as \d+z.*q, scanned the same file in 222 ms.

Each edit writes a copy of the whole file, so its time grows with the file’s size; see How editing works. The times below are how long an edit takes before you can make the next one. Save then takes a fraction of a second: 0.11 s on the 490 MB file.

File Change a value Delete an element Append an element
15 MB 0.03 s 0.03 s 0.05 s
400 MB 0.39 s 0.38 s 0.98 s
490 MB 0.52 s 0.45 s 1.0 s
1 GB 2.0 s 2.4 s 4.1 s
2 GB 1.8 s 4.2 s 8.4 s

Editing stops at 2 GiB; see Limits.

Writing a pretty-printed or minified copy of the 1.1 GB single-line file:

Output Time Input rate
Pretty, 2 spaces 6.7 s 178 MB/s
Minified 2.8 s 433 MB/s

The pretty-printed copy of that file is 2.4 GB.

SQL queries read an NDJSON file or a root array directly from the file. The measurements below used the default SQL memory limit.

Query File Time
count(*), cold 1 GB NDJSON, 3.47 million records 2.5 s
count(*), warm same 0.55 s
Group by one column with count, sum, and average same 0.59 s
SELECT *, first 10,000 rows same 0.40 s
Read the whole file to find every column same 37 s
count(*) 1.1 GB JSON array, 12 million elements 5.0 s
Cancel a running query 1 GB NDJSON about 100 ms

While a query scans the 1 GB NDJSON file, the app’s own memory rises by up to 331 MB and returns to the previous level once the query finishes.