Skip to content

Benchmarks

Generated: 2026-02-09 Node: v20.20.0

Summary

  • Each query is time-boxed per dataset (see targetMs in results.json).
  • Eval is disabled unless required by a query.
  • Suite includes RFC 9535 filter functions (length/match) and reverse slices.
  • Datasets cover small fixtures, synthetic collections, deep trees, wide objects, large arrays, and Unicode-heavy keys.
  • Datasets: 7 (fixture, synthetic, nested, wide, array, unicode, cars).
  • Queries: 43 total (9 eval, 34 non-eval).
  • Tags: recursion, filters, rfc-functions, reverse-slice, unicode.
  • Cars dataset is loaded from bench/cars.json (~100MB).
  • Some queries are unsupported by certain engines and marked as such.

Results

Fixture (Goessner)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false8,046,5272,345,368717,073jsonpathx
dot$.store.book[0].authorfalse4,926,395904,83157,109jsonpathx
bracket$['store']['book'][0]['author']false4,970,136837,96243,979jsonpathx
union-names$.store['book','bicycle']false703,095606,64862,627jsonpathx
wildcard$.store.*false745,9571,113,069108,413jsonpath-plus
recursive$..authorfalse806,756256,00379,191jsonpathx
slice$.store.book[0:2]false574,346535,52165,125jsonpathx
slice-negative$.store.book[-3:-1]false570,608509,29165,355jsonpathx
index-negative$.store.book[-1]false5,256,2571,350,35174,531jsonpathx
union$.store.book[0,2]false544,833535,83155,420tie (jsonpathx)
filter$..book[?(@.price < 10)]native497,7752,68945,892jsonpathx
script$..book[(@.length-1)]native472,7012,77423,510jsonpathx
parent$..book[?(@.price > 10)]^native348,6682,899unsupportedjsonpathx
property$.store.*~false448,804864,325unsupportedjsonpath-plus
type-selector$..*@number()false480,683105,606unsupportedjsonpathx
rfc-length$..book[?length(@.author) > 3]false231,694305,991unsupportedjsonpath-plus
rfc-match$..book[?match(@.author, '^[A-Z]')]false286,975305,547unsupportedjsonpath-plus

Synthetic (2k items)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,863,3611,988,711691,039jsonpathx
synthetic-items$.items[*].idfalse1,4771,748287jsonpath-plus
synthetic-filter$.items[?(@.price > 750 && @.tags.featured)].idnative27,4212952,228jsonpathx
synthetic-filter-heavy$.items[?(@.price > 500 && @.specs.weight < 20)].idnative6,4232681,231jsonpathx
synthetic-recursive$..tags.featuredfalse60926883jsonpathx
synthetic-groups$.groups[*].items[*].idfalse1,5021,614282jsonpath-plus
synthetic-slice$.items[100:500:5].pricefalse844,12824,2682,182jsonpathx
synthetic-slice-reverse$.items[200:0:-3].pricefalse934,1601,366,9152,254jsonpath-plus

Nested (tree)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,615,9262,049,127694,671jsonpathx
nested-recursive$.tree..leaffalse45,5858,1134,353jsonpathx
nested-siblings$.tree.siblings[*].leaffalse436,588725,43158,506jsonpath-plus
nested-filter$..[?(@.leaf == true)]native12,4936833,045jsonpathx

Wide (2k keys)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,715,6092,046,392680,597jsonpathx
wide-specific$.props.key_1999.valuefalse4,689,267960,65079,980jsonpathx
wide-wildcard$.props.*.valuefalse1,1841,393267jsonpath-plus
wide-filter$.props.*[?(@.nested.flag)].valuenativeunsupportedunsupported3jsonpath
wide-recursive$..valuefalse1,307380204jsonpathx

Array (50k items)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,745,5752,075,778649,101jsonpathx
array-slice-large$.data[1000:5000:7]false14,5416,41161jsonpathx
array-union$.data[0,100,1000,10000]false541,916352,507152jsonpathx
array-last$.data[-1]false6,032,1331,626,719614jsonpathx

Unicode (quoted names)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,862,3652,127,418697,996jsonpathx
unicode-quoted$['naïve key']['emoji😀'][*]['sp ace']false409,279675,47141,442jsonpath-plus
unicode-recursive$..['sp ace']false1,552,253460,134104,240jsonpathx

Cars (100MB)

QueryPathEvalJsonPathX ops/secJSONPath Plus ops/secjsonpath ops/secWinner
root$false6,945,8442,130,874711,466jsonpathx
cars-brand$.cars[*].brand.namefalse48440jsonpathx
cars-models$.cars[:25].modelfalse987,41370,610142jsonpathx
cars-union$.cars[0,1,2].manufacturerfalse359,668340,728649jsonpathx
cars-recursive$..engineDisplacementfalse13122jsonpathx
cars-filter$.cars[?(@.fuelType == 'Petrol')].modelnative68161jsonpathx
cars-script$.cars[(@.length-1)].modelnative466,1212,8951,064jsonpathx
cars-property$.cars[0].extraFeatures.*~false212,064379,385unsupportedjsonpath-plus

Released under the MIT License.