diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 9c5b85b..a428f7d 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -46,7 +46,6 @@ jobs: if: ${{ needs.discover.result == 'success' }} uses: Stillpoint-Software/shared-workflows/.github/workflows/format.yml@main with: - dotnet_version: "10.0.x" branch: ${{ needs.discover.outputs.branch_name }} secrets: inherit diff --git a/Directory.Build.props b/Directory.Build.props index 7c058ba..5fe723a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,15 +2,10 @@ - - + - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + @@ -45,4 +40,9 @@ PackagePath="\" Link="LICENSE" /> + + + enable + net10.0 + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000..5a1423a --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,32 @@ + + + true + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + \ No newline at end of file diff --git a/Hyperbee.Json.slnx b/Hyperbee.Json.slnx index 8f8f785..bc5afd2 100644 --- a/Hyperbee.Json.slnx +++ b/Hyperbee.Json.slnx @@ -1,6 +1,7 @@ + diff --git a/README.md b/README.md index dbdf95a..de2bb9d 100644 --- a/README.md +++ b/README.md @@ -95,207 +95,209 @@ Here is a performance comparison of various JSONPath queries on the standard boo } } ``` -| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | -|------------------------ | ----------:|----------:|----------:|-------:|-------:|----------:| -|`$..[?(@.price < 10)]` -| JsonCraft.JsonElement | 3.049 us | 0.7626 us | 0.0418 us | 0.2899 | - | 3.59 KB | -| Hyperbee.JsonElement | 5.400 us | 0.5197 us | 0.0285 us | 1.2894 | 0.0076 | 15.84 KB | -| Hyperbee.JsonNode | 5.824 us | 1.8214 us | 0.0998 us | 1.4954 | 0.0305 | 18.38 KB | -| JsonCons.JsonElement | 5.955 us | 2.4616 us | 0.1349 us | 1.0376 | 0.0076 | 12.73 KB | -| Newtonsoft.JObject | 8.838 us | 1.3040 us | 0.0715 us | 2.1057 | 0.0763 | 25.86 KB | -| JsonEverything.JsonNode | 19.543 us | 9.1216 us | 0.5000 us | 3.9063 | 0.1221 | 48.15 KB | -| | | | | | | | -|`$..['bicycle','price']` -| JsonCraft.JsonElement | 2.451 us | 0.3691 us | 0.0202 us | 0.3242 | - | 4.01 KB | -| Hyperbee.JsonElement | 2.689 us | 0.6920 us | 0.0379 us | 0.4158 | - | 5.12 KB | -| JsonCons.JsonElement | 3.217 us | 0.4797 us | 0.0263 us | 0.5798 | 0.0038 | 7.13 KB | -| Hyperbee.JsonNode | 3.435 us | 0.8745 us | 0.0479 us | 0.7210 | 0.0114 | 8.84 KB | -| Newtonsoft.JObject | 5.548 us | 1.7475 us | 0.0958 us | 1.1826 | 0.0458 | 14.55 KB | -| JsonEverything.JsonNode | 12.999 us | 0.5857 us | 0.0321 us | 2.3193 | 0.0610 | 28.5 KB | -| | | | | | | | -|`$..` -| JsonCraft.JsonElement | 2.110 us | 0.2534 us | 0.0139 us | 0.2327 | - | 2.88 KB | -| Hyperbee.JsonElement | 2.478 us | 0.3201 us | 0.0175 us | 0.5226 | 0.0038 | 6.45 KB | -| Hyperbee.JsonNode | 3.434 us | 0.6438 us | 0.0353 us | 0.7782 | 0.0153 | 9.54 KB | -| JsonCons.JsonElement | 3.450 us | 0.5528 us | 0.0303 us | 0.6866 | 0.0038 | 8.45 KB | -| Newtonsoft.JObject | 5.217 us | 0.4099 us | 0.0225 us | 1.1520 | 0.0458 | 14.19 KB | -| JsonEverything.JsonNode | 17.330 us | 1.5400 us | 0.0844 us | 2.7466 | 0.0610 | 33.97 KB | -| | | | | | | | + + +| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | +|------------------------ | ----------:|-----------:|----------:|-------:|-------:|----------:| +| `$..[?(@.price < 10)]` +| JsonCraft.JsonElement | 2.957 us | 1.1397 us | 0.0625 us | 0.2899 | - | 3.59 KB | +| Hyperbee.JsonElement | 5.221 us | 0.8505 us | 0.0466 us | 1.2894 | 0.0076 | 15.84 KB | +| JsonCons.JsonElement | 5.518 us | 1.3367 us | 0.0733 us | 1.0376 | 0.0076 | 12.73 KB | +| Hyperbee.JsonNode | 5.915 us | 0.8714 us | 0.0478 us | 1.4954 | 0.0153 | 18.38 KB | +| Newtonsoft.JObject | 8.009 us | 1.7612 us | 0.0965 us | 2.1057 | 0.0763 | 25.86 KB | +| JsonEverything.JsonNode | 17.850 us | 12.0238 us | 0.6591 us | 3.9063 | 0.1221 | 48.15 KB | +| | | | | | | | +| `$..['bicycle','price']` +| JsonCraft.JsonElement | 2.309 us | 0.2498 us | 0.0137 us | 0.3242 | - | 4.01 KB | +| Hyperbee.JsonElement | 2.701 us | 1.0824 us | 0.0593 us | 0.4158 | - | 5.12 KB | +| JsonCons.JsonElement | 3.058 us | 0.3820 us | 0.0209 us | 0.5760 | 0.0038 | 7.09 KB | +| Hyperbee.JsonNode | 3.626 us | 1.3209 us | 0.0724 us | 0.7210 | 0.0114 | 8.84 KB | +| Newtonsoft.JObject | 4.990 us | 1.5961 us | 0.0875 us | 1.1826 | 0.0458 | 14.55 KB | +| JsonEverything.JsonNode | 12.183 us | 2.7932 us | 0.1531 us | 2.3193 | 0.0610 | 28.5 KB | +| | | | | | | | +| `$..*` +| JsonCraft.JsonElement | 2.023 us | 0.4743 us | 0.0260 us | 0.2327 | - | 2.88 KB | +| Hyperbee.JsonElement | 2.390 us | 0.7132 us | 0.0391 us | 0.5226 | 0.0038 | 6.45 KB | +| JsonCons.JsonElement | 3.239 us | 0.8771 us | 0.0481 us | 0.6866 | 0.0038 | 8.45 KB | +| Hyperbee.JsonNode | 3.864 us | 2.6714 us | 0.1464 us | 0.7629 | - | 9.54 KB | +| Newtonsoft.JObject | 4.864 us | 0.7073 us | 0.0388 us | 1.1520 | 0.0458 | 14.19 KB | +| JsonEverything.JsonNode | 17.367 us | 10.7988 us | 0.5919 us | 2.7466 | 0.0610 | 33.97 KB | +| | | | | | | | |`$..author` -| JsonCraft.JsonElement | 2.352 us | 0.4147 us | 0.0227 us | 0.2327 | - | 2.88 KB | -| Hyperbee.JsonElement | 2.359 us | 0.2998 us | 0.0164 us | 0.4158 | - | 5.1 KB | -| JsonCons.JsonElement | 2.826 us | 1.7249 us | 0.0945 us | 0.4463 | 0.0038 | 5.47 KB | -| Hyperbee.JsonNode | 3.290 us | 2.1900 us | 0.1200 us | 0.7019 | 0.0038 | 8.64 KB | -| Newtonsoft.JObject | 5.246 us | 0.8047 us | 0.0441 us | 1.1520 | 0.0381 | 14.2 KB | -| JsonEverything.JsonNode | 12.429 us | 6.1835 us | 0.3389 us | 2.1057 | 0.0305 | 26.1 KB | -| | | | | | | | -|`$..book[?@.isbn]` -| Hyperbee.JsonElement | 2.883 us | 1.0678 us | 0.0585 us | 0.4997 | 0.0038 | 6.14 KB | -| JsonCons.JsonElement | 3.362 us | 0.8878 us | 0.0487 us | 0.5836 | 0.0038 | 7.16 KB | -| Hyperbee.JsonNode | 3.965 us | 3.7942 us | 0.2080 us | 0.7858 | 0.0153 | 9.64 KB | -| JsonEverything.JsonNode | 13.766 us | 1.2953 us | 0.0710 us | 2.4414 | 0.0610 | 29.98 KB | -| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | -| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | -| | | | | | | | -|`$..book[?@.price == 8.99 && @.category == 'fiction']` -| Hyperbee.JsonElement | 3.708 us | 1.8637 us | 0.1022 us | 0.6752 | 0.0038 | 8.28 KB | -| Hyperbee.JsonNode | 4.746 us | 0.9875 us | 0.0541 us | 0.9460 | - | 11.91 KB | -| JsonCons.JsonElement | 4.845 us | 1.3375 us | 0.0733 us | 0.6866 | - | 8.48 KB | -| JsonEverything.JsonNode | 17.256 us | 1.0914 us | 0.0598 us | 3.1738 | 0.0610 | 39.27 KB | -| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | -| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | -| | | | | | | | -|`$..book[0,1]` -| JsonCraft.JsonElement | 2.345 us | 0.1935 us | 0.0106 us | 0.2518 | - | 3.09 KB | -| Hyperbee.JsonElement | 2.417 us | 0.0175 us | 0.0010 us | 0.4158 | - | 5.1 KB | -| JsonCons.JsonElement | 3.005 us | 0.9922 us | 0.0544 us | 0.4959 | 0.0038 | 6.1 KB | -| Hyperbee.JsonNode | 3.163 us | 1.0620 us | 0.0582 us | 0.7019 | - | 8.64 KB | -| Newtonsoft.JObject | 5.089 us | 0.8914 us | 0.0489 us | 1.1749 | 0.0458 | 14.45 KB | -| JsonEverything.JsonNode | 12.339 us | 0.9570 us | 0.0525 us | 2.1362 | 0.0610 | 26.41 KB | -| | | | | | | | -|`$..book[0]` -| JsonCraft.JsonElement | 2.241 us | 0.1554 us | 0.0085 us | 0.2441 | - | 3 KB | -| Hyperbee.JsonElement | 2.271 us | 1.0724 us | 0.0588 us | 0.4158 | - | 5.1 KB | -| JsonCons.JsonElement | 2.708 us | 0.8340 us | 0.0457 us | 0.4501 | - | 5.55 KB | -| Hyperbee.JsonNode | 3.528 us | 0.2841 us | 0.0156 us | 0.7019 | 0.0038 | 8.64 KB | -| Newtonsoft.JObject | 5.005 us | 0.3486 us | 0.0191 us | 1.1673 | 0.0381 | 14.33 KB | -| JsonEverything.JsonNode | 11.781 us | 1.7173 us | 0.0941 us | 2.1057 | 0.0610 | 26.02 KB | -| | | | | | | | -|`$.store..price` -| Hyperbee.JsonElement | 2.293 us | 0.4706 us | 0.0258 us | 0.3853 | - | 4.73 KB | -| JsonCraft.JsonElement | 2.363 us | 1.0577 us | 0.0580 us | 0.2518 | - | 3.13 KB | -| JsonCons.JsonElement | 2.720 us | 2.0514 us | 0.1124 us | 0.4539 | - | 5.57 KB | -| Hyperbee.JsonNode | 3.181 us | 0.5370 us | 0.0294 us | 0.6828 | - | 8.38 KB | -| Newtonsoft.JObject | 5.083 us | 0.4737 us | 0.0260 us | 1.1673 | 0.0381 | 14.34 KB | -| JsonEverything.JsonNode | 13.102 us | 2.1212 us | 0.1163 us | 2.1667 | 0.0610 | 26.63 KB | -| | | | | | | | -|`$.store.*` -| JsonCraft.JsonElement | 1.561 us | 0.1662 us | 0.0091 us | 0.2022 | - | 2.49 KB | -| Hyperbee.JsonElement | 1.602 us | 0.6889 us | 0.0378 us | 0.2289 | - | 2.81 KB | -| JsonCons.JsonElement | 1.693 us | 0.7460 us | 0.0409 us | 0.2651 | - | 3.27 KB | -| Hyperbee.JsonNode | 1.784 us | 0.6002 us | 0.0329 us | 0.2365 | 0.0019 | 2.9 KB | -| JsonEverything.JsonNode | 2.395 us | 0.3007 us | 0.0165 us | 0.3891 | - | 4.8 KB | -| Newtonsoft.JObject | 4.664 us | 0.6593 us | 0.0361 us | 1.1749 | 0.0458 | 14.43 KB | -| | | | | | | | -|`$.store.bicycle.color` -| Hyperbee.JsonElement | 1.454 us | 0.6877 us | 0.0377 us | 0.1755 | - | 2.17 KB | -| JsonCraft.JsonElement | 1.585 us | 0.7476 us | 0.0410 us | 0.1984 | - | 2.45 KB | -| Hyperbee.JsonNode | 1.695 us | 0.7429 us | 0.0407 us | 0.2346 | 0.0019 | 2.88 KB | -| JsonCons.JsonElement | 1.816 us | 1.7814 us | 0.0976 us | 0.2632 | - | 3.23 KB | -| JsonEverything.JsonNode | 2.892 us | 0.3155 us | 0.0173 us | 0.4654 | 0.0038 | 5.74 KB | -| Newtonsoft.JObject | 4.582 us | 0.7337 us | 0.0402 us | 1.1826 | 0.0381 | 14.49 KB | -| | | | | | | | -|`$.store.book[-1:]` -| Hyperbee.JsonElement | 1.579 us | 0.5378 us | 0.0295 us | 0.1945 | - | 2.41 KB | -| JsonCraft.JsonElement | 1.622 us | 0.1762 us | 0.0097 us | 0.2098 | - | 2.58 KB | -| Hyperbee.JsonNode | 1.809 us | 0.3378 us | 0.0185 us | 0.2422 | - | 2.97 KB | -| JsonCons.JsonElement | 1.882 us | 0.5619 us | 0.0308 us | 0.2861 | - | 3.52 KB | -| JsonEverything.JsonNode | 2.806 us | 0.3959 us | 0.0217 us | 0.4654 | 0.0038 | 5.72 KB | -| Newtonsoft.JObject | 4.663 us | 0.5645 us | 0.0309 us | 1.1826 | 0.0534 | 14.52 KB | -| | | | | | | | -|`$.store.book[:2]` -| Hyperbee.JsonElement | 1.604 us | 0.5879 us | 0.0322 us | 0.1945 | - | 2.41 KB | -| JsonCraft.JsonElement | 1.637 us | 0.0647 us | 0.0035 us | 0.2098 | - | 2.58 KB | -| Hyperbee.JsonNode | 1.826 us | 0.1527 us | 0.0084 us | 0.2422 | - | 2.97 KB | -| JsonCons.JsonElement | 1.871 us | 0.6744 us | 0.0370 us | 0.2880 | - | 3.54 KB | -| JsonEverything.JsonNode | 3.068 us | 0.0441 us | 0.0024 us | 0.4883 | 0.0038 | 6.02 KB | -| Newtonsoft.JObject | 5.069 us | 5.6079 us | 0.3074 us | 1.1826 | 0.0305 | 14.51 KB | -| | | | | | | | -|`$.store.book[?(@.author && @.title)]` -| JsonCraft.JsonElement | 2.007 us | 0.5824 us | 0.0319 us | 0.2670 | - | 3.3 KB | -| Hyperbee.JsonElement | 2.387 us | 0.5434 us | 0.0298 us | 0.3395 | - | 4.18 KB | -| JsonCons.JsonElement | 2.970 us | 0.5634 us | 0.0309 us | 0.4539 | 0.0038 | 5.58 KB | -| Hyperbee.JsonNode | 3.636 us | 1.5759 us | 0.0864 us | 0.6561 | 0.0076 | 8.08 KB | -| Newtonsoft.JObject | 5.449 us | 1.4272 us | 0.0782 us | 1.3199 | 0.0458 | 16.18 KB | -| JsonEverything.JsonNode | 7.147 us | 3.7089 us | 0.2033 us | 1.4648 | 0.0305 | 18.32 KB | -| | | | | | | | -|`$.store.book[?(@.category == 'fiction')]` -| JsonCraft.JsonElement | 2.243 us | 1.6372 us | 0.0897 us | 0.2747 | - | 3.38 KB | -| JsonCons.JsonElement | 2.800 us | 0.8079 us | 0.0443 us | 0.4082 | 0.0038 | 5.01 KB | -| Hyperbee.JsonElement | 2.825 us | 2.4544 us | 0.1345 us | 0.3510 | - | 4.34 KB | -| Hyperbee.JsonNode | 3.391 us | 3.0949 us | 0.1696 us | 0.6561 | - | 8.2 KB | -| Newtonsoft.JObject | 5.009 us | 0.9350 us | 0.0513 us | 1.2817 | 0.0458 | 15.74 KB | -| JsonEverything.JsonNode | 7.002 us | 0.9434 us | 0.0517 us | 1.3428 | 0.0305 | 16.49 KB | -| | | | | | | | -|`$.store.book[?(@.price < 10)].title` -| JsonCraft.JsonElement | 2.357 us | 1.1758 us | 0.0644 us | 0.2747 | - | 3.37 KB | -| Hyperbee.JsonElement | 2.496 us | 1.2422 us | 0.0681 us | 0.3548 | - | 4.35 KB | -| JsonCons.JsonElement | 2.954 us | 1.3447 us | 0.0737 us | 0.4196 | - | 5.18 KB | -| Hyperbee.JsonNode | 3.466 us | 0.7381 us | 0.0405 us | 0.6561 | - | 8.09 KB | -| Newtonsoft.JObject | 5.209 us | 1.2339 us | 0.0676 us | 1.2894 | 0.0534 | 15.89 KB | -| JsonEverything.JsonNode | 7.547 us | 1.3411 us | 0.0735 us | 1.4038 | 0.0305 | 17.38 KB | -| | | | | | | | -|`$.store.book[?(@.price > 10 && @.price < 20)]` -| JsonCraft.JsonElement | 2.798 us | 1.2832 us | 0.0703 us | 0.3090 | - | 3.82 KB | -| Hyperbee.JsonElement | 3.067 us | 1.9850 us | 0.1088 us | 0.4349 | 0.0038 | 5.37 KB | -| Hyperbee.JsonNode | 3.827 us | 2.2293 us | 0.1222 us | 0.7324 | - | 9.14 KB | -| JsonCons.JsonElement | 4.398 us | 3.5937 us | 0.1970 us | 0.5035 | - | 6.23 KB | -| Newtonsoft.JObject | 5.358 us | 2.0125 us | 0.1103 us | 1.3580 | 0.0534 | 16.69 KB | -| JsonEverything.JsonNode | 9.003 us | 2.3392 us | 0.1282 us | 1.8005 | 0.0305 | 22.27 KB | -| | | | | | | | -|`$.store.book[?@.price == 8.99]` -| Hyperbee.JsonElement | 2.291 us | 1.2891 us | 0.0707 us | 0.3357 | - | 4.15 KB | -| JsonCons.JsonElement | 2.826 us | 1.0191 us | 0.0559 us | 0.4044 | - | 4.97 KB | -| Hyperbee.JsonNode | 3.630 us | 3.3549 us | 0.1839 us | 0.6409 | - | 7.89 KB | -| JsonEverything.JsonNode | 6.450 us | 1.0062 us | 0.0552 us | 1.2512 | 0.0305 | 15.47 KB | -| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | -| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | -| | | | | | | | -|`$.store.book['category','author']` -| JsonCraft.JsonElement | 1.650 us | 0.2189 us | 0.0120 us | 0.2403 | - | 2.95 KB | -| JsonCons.JsonElement | 1.862 us | 0.1098 us | 0.0060 us | 0.2937 | 0.0019 | 3.61 KB | -| Hyperbee.JsonElement | 1.988 us | 0.8489 us | 0.0465 us | 0.2098 | - | 2.61 KB | -| JsonEverything.JsonNode | 2.622 us | 0.8004 us | 0.0439 us | 0.4387 | 0.0038 | 5.41 KB | -| Hyperbee.JsonNode | 3.215 us | 1.1826 us | 0.0648 us | 0.5226 | 0.0076 | 6.42 KB | -| Newtonsoft.JObject | 4.681 us | 0.5122 us | 0.0281 us | 1.2054 | 0.0534 | 14.85 KB | -| | | | | | | | -|`$.store.book[*].author` -| JsonCraft.JsonElement | 1.729 us | 0.7445 us | 0.0408 us | 0.2136 | 0.0019 | 2.63 KB | -| JsonCons.JsonElement | 1.909 us | 0.4640 us | 0.0254 us | 0.2861 | - | 3.55 KB | -| Hyperbee.JsonElement | 1.993 us | 0.3660 us | 0.0201 us | 0.2480 | - | 3.05 KB | -| Hyperbee.JsonNode | 2.885 us | 2.4990 us | 0.1370 us | 0.5493 | - | 6.83 KB | -| Newtonsoft.JObject | 4.894 us | 6.5976 us | 0.3616 us | 1.1902 | 0.0534 | 14.64 KB | -| JsonEverything.JsonNode | 5.893 us | 1.3873 us | 0.0760 us | 1.0071 | - | 12.45 KB | -| | | | | | | | -|`$.store.book[*]` -| JsonCraft.JsonElement | 1.578 us | 0.8516 us | 0.0467 us | 0.1984 | - | 2.45 KB | -| JsonCons.JsonElement | 1.692 us | 0.8482 us | 0.0465 us | 0.2728 | - | 3.35 KB | -| Hyperbee.JsonElement | 1.738 us | 0.3719 us | 0.0204 us | 0.2155 | - | 2.65 KB | -| Hyperbee.JsonNode | 1.923 us | 0.7320 us | 0.0401 us | 0.2556 | - | 3.17 KB | -| JsonEverything.JsonNode | 3.526 us | 0.0963 us | 0.0053 us | 0.5341 | - | 6.61 KB | -| Newtonsoft.JObject | 4.752 us | 0.2905 us | 0.0159 us | 1.1826 | 0.0381 | 14.49 KB | -| | | | | | | | -|`$.store.book[0,1]` -| Hyperbee.JsonElement | 1.560 us | 0.6522 us | 0.0358 us | 0.1945 | - | 2.41 KB | -| JsonCraft.JsonElement | 1.675 us | 0.3241 us | 0.0178 us | 0.2136 | - | 2.64 KB | -| JsonCons.JsonElement | 1.910 us | 0.3014 us | 0.0165 us | 0.3033 | - | 3.73 KB | -| Hyperbee.JsonNode | 1.976 us | 1.1111 us | 0.0609 us | 0.2403 | - | 2.97 KB | -| JsonEverything.JsonNode | 3.071 us | 0.1558 us | 0.0085 us | 0.4883 | - | 6.07 KB | -| Newtonsoft.JObject | 4.870 us | 0.8053 us | 0.0441 us | 1.1902 | 0.0534 | 14.59 KB | -| | | | | | | | -|`$.store.book[0].title` -| Hyperbee.JsonElement | 1.515 us | 0.1457 us | 0.0080 us | 0.1755 | - | 2.17 KB | -| JsonCraft.JsonElement | 1.713 us | 1.1282 us | 0.0618 us | 0.2041 | - | 2.51 KB | -| JsonCons.JsonElement | 1.869 us | 0.0938 us | 0.0051 us | 0.2689 | - | 3.3 KB | -| Hyperbee.JsonNode | 1.945 us | 0.2311 us | 0.0127 us | 0.2937 | - | 3.6 KB | -| JsonEverything.JsonNode | 3.451 us | 0.4020 us | 0.0220 us | 0.5951 | - | 7.38 KB | -| Newtonsoft.JObject | 4.706 us | 1.4286 us | 0.0783 us | 1.1902 | 0.0458 | 14.62 KB | -| | | | | | | | -|`$.store.book[0]` -| Hyperbee.JsonElement | 1.392 us | 0.6219 us | 0.0341 us | 0.1755 | - | 2.17 KB | -| JsonCraft.JsonElement | 1.570 us | 0.2170 us | 0.0119 us | 0.1984 | - | 2.44 KB | -| JsonCons.JsonElement | 1.783 us | 0.9320 us | 0.0511 us | 0.2613 | - | 3.21 KB | -| Hyperbee.JsonNode | 1.870 us | 0.6578 us | 0.0361 us | 0.2308 | - | 2.83 KB | -| JsonEverything.JsonNode | 2.832 us | 0.6614 us | 0.0363 us | 0.4616 | 0.0038 | 5.68 KB | -| Newtonsoft.JObject | 4.697 us | 0.9290 us | 0.0509 us | 1.1749 | 0.0381 | 14.48 KB | -| | | | | | | | -|`$` -| Hyperbee.JsonElement | 1.316 us | 0.7199 us | 0.0395 us | 0.1755 | - | 2.17 KB | -| JsonCraft.JsonElement | 1.368 us | 0.0907 us | 0.0050 us | 0.1793 | - | 2.22 KB | -| JsonEverything.JsonNode | 1.438 us | 0.1670 us | 0.0092 us | 0.1526 | - | 1.88 KB | -| Hyperbee.JsonNode | 1.440 us | 0.2725 us | 0.0149 us | 0.1411 | - | 1.75 KB | -| JsonCons.JsonElement | 1.456 us | 0.1789 us | 0.0098 us | 0.2384 | - | 2.94 KB | -| Newtonsoft.JObject | 4.331 us | 1.0036 us | 0.0550 us | 1.1368 | 0.0381 | 13.98 KB | +| JsonCraft.JsonElement | 2.071 us | 0.8571 us | 0.0470 us | 0.2327 | - | 2.88 KB | +| Hyperbee.JsonElement | 2.275 us | 0.5597 us | 0.0307 us | 0.4158 | - | 5.1 KB | +| JsonCons.JsonElement | 2.572 us | 0.2856 us | 0.0157 us | 0.4463 | 0.0038 | 5.47 KB | +| Hyperbee.JsonNode | 3.226 us | 0.6372 us | 0.0349 us | 0.7019 | - | 8.64 KB | +| Newtonsoft.JObject | 4.793 us | 3.7445 us | 0.2053 us | 1.1520 | 0.0381 | 14.2 KB | +| JsonEverything.JsonNode | 11.786 us | 2.5761 us | 0.1412 us | 2.0752 | - | 26.1 KB | +| | | | | | | | +| `$..book[?@.isbn]` +| Hyperbee.JsonElement | 2.814 us | 0.7079 us | 0.0388 us | 0.4997 | 0.0038 | 6.14 KB | +| JsonCons.JsonElement | 3.348 us | 0.4197 us | 0.0230 us | 0.5836 | 0.0038 | 7.16 KB | +| Hyperbee.JsonNode | 3.587 us | 1.1927 us | 0.0654 us | 0.7629 | - | 9.64 KB | +| JsonEverything.JsonNode | 12.860 us | 6.6350 us | 0.3637 us | 2.4414 | 0.0610 | 29.98 KB | +| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | +| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | +| | | | | | | | +| `$..book[?@.price == 8.99 && @.category == 'fiction']` +| Hyperbee.JsonElement | 3.599 us | 1.1407 us | 0.0625 us | 0.6752 | 0.0038 | 8.28 KB | +| Hyperbee.JsonNode | 4.593 us | 2.6977 us | 0.1479 us | 0.9460 | - | 11.91 KB | +| JsonCons.JsonElement | 4.684 us | 3.2355 us | 0.1774 us | 0.6866 | - | 8.48 KB | +| JsonEverything.JsonNode | 17.000 us | 14.9488 us | 0.8194 us | 3.1738 | - | 39.52 KB | +| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | +| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | +| | | | | | | | +| $..book[0,1] +| JsonCraft.JsonElement | 2.184 us | 1.1145 us | 0.0611 us | 0.2518 | - | 3.09 KB | +| Hyperbee.JsonElement | 2.316 us | 0.6324 us | 0.0347 us | 0.4158 | - | 5.1 KB | +| JsonCons.JsonElement | 2.973 us | 3.2806 us | 0.1798 us | 0.4921 | 0.0038 | 6.06 KB | +| Hyperbee.JsonNode | 3.363 us | 2.4201 us | 0.1327 us | 0.7019 | 0.0038 | 8.64 KB | +| Newtonsoft.JObject | 4.709 us | 1.1244 us | 0.0616 us | 1.1749 | 0.0458 | 14.45 KB | +| JsonEverything.JsonNode | 11.585 us | 1.1525 us | 0.0632 us | 2.1362 | 0.0610 | 26.41 KB | +| | | | | | | | +| `$..book[0]` +| JsonCraft.JsonElement | 2.097 us | 0.7390 us | 0.0405 us | 0.2441 | - | 3 KB | +| Hyperbee.JsonElement | 2.417 us | 0.4037 us | 0.0221 us | 0.4158 | - | 5.1 KB | +| JsonCons.JsonElement | 2.767 us | 1.0765 us | 0.0590 us | 0.4539 | 0.0038 | 5.59 KB | +| Hyperbee.JsonNode | 3.439 us | 2.6110 us | 0.1431 us | 0.7019 | - | 8.64 KB | +| Newtonsoft.JObject | 4.730 us | 0.4614 us | 0.0253 us | 1.1673 | 0.0381 | 14.33 KB | +| JsonEverything.JsonNode | 11.404 us | 1.6551 us | 0.0907 us | 2.0752 | 0.0610 | 26.02 KB | +| | | | | | | | +| `$.store..price` +| Hyperbee.JsonElement | 2.174 us | 0.2046 us | 0.0112 us | 0.3853 | - | 4.73 KB | +| JsonCraft.JsonElement | 2.174 us | 0.9541 us | 0.0523 us | 0.2518 | - | 3.13 KB | +| JsonCons.JsonElement | 2.657 us | 1.2199 us | 0.0669 us | 0.4539 | - | 5.57 KB | +| Hyperbee.JsonNode | 3.219 us | 1.6130 us | 0.0884 us | 0.6828 | - | 8.38 KB | +| Newtonsoft.JObject | 4.751 us | 0.3461 us | 0.0190 us | 1.1673 | 0.0381 | 14.34 KB | +| JsonEverything.JsonNode | 12.312 us | 4.6283 us | 0.2537 us | 2.1362 | 0.0610 | 26.63 KB | +| | | | | | | | +| `$.store.*` +| JsonCraft.JsonElement | 1.415 us | 0.5540 us | 0.0304 us | 0.2022 | - | 2.49 KB | +| Hyperbee.JsonElement | 1.564 us | 0.4252 us | 0.0233 us | 0.2289 | - | 2.81 KB | +| JsonCons.JsonElement | 1.699 us | 0.5680 us | 0.0311 us | 0.2651 | - | 3.27 KB | +| Hyperbee.JsonNode | 1.762 us | 0.0234 us | 0.0013 us | 0.2365 | 0.0019 | 2.9 KB | +| JsonEverything.JsonNode | 2.264 us | 0.3401 us | 0.0186 us | 0.3891 | 0.0038 | 4.8 KB | +| Newtonsoft.JObject | 4.142 us | 0.4524 us | 0.0248 us | 1.1749 | 0.0458 | 14.43 KB | +| | | | | | | | +| `$.store.bicycle.color` +| Hyperbee.JsonElement | 1.415 us | 0.3898 us | 0.0214 us | 0.1755 | - | 2.17 KB | +| JsonCraft.JsonElement | 1.532 us | 0.2165 us | 0.0119 us | 0.1984 | - | 2.45 KB | +| JsonCons.JsonElement | 1.671 us | 0.2610 us | 0.0143 us | 0.2632 | - | 3.23 KB | +| Hyperbee.JsonNode | 1.706 us | 0.4849 us | 0.0266 us | 0.2346 | - | 2.88 KB | +| JsonEverything.JsonNode | 2.629 us | 1.6792 us | 0.0920 us | 0.4654 | 0.0038 | 5.74 KB | +| Newtonsoft.JObject | 4.336 us | 1.2294 us | 0.0674 us | 1.1826 | 0.0381 | 14.49 KB | +| | | | | | | | +| `$.store.book[-1:]` +| JsonCraft.JsonElement | 1.479 us | 0.1113 us | 0.0061 us | 0.2098 | - | 2.58 KB | +| Hyperbee.JsonElement | 1.515 us | 0.3284 us | 0.0180 us | 0.1945 | - | 2.41 KB | +| JsonCons.JsonElement | 1.813 us | 0.0749 us | 0.0041 us | 0.2861 | 0.0019 | 3.52 KB | +| Hyperbee.JsonNode | 1.821 us | 0.1880 us | 0.0103 us | 0.2422 | - | 2.97 KB | +| JsonEverything.JsonNode | 2.686 us | 0.5270 us | 0.0289 us | 0.4654 | 0.0038 | 5.72 KB | +| Newtonsoft.JObject | 4.390 us | 0.6167 us | 0.0338 us | 1.1826 | 0.0534 | 14.52 KB | +| | | | | | | | +| `$.store.book[:2]` +| JsonCraft.JsonElement | 1.547 us | 0.3302 us | 0.0181 us | 0.2098 | - | 2.58 KB | +| Hyperbee.JsonElement | 1.554 us | 1.0503 us | 0.0576 us | 0.1945 | - | 2.41 KB | +| JsonCons.JsonElement | 1.867 us | 0.9304 us | 0.0510 us | 0.2880 | - | 3.54 KB | +| Hyperbee.JsonNode | 1.869 us | 0.2955 us | 0.0162 us | 0.2289 | - | 2.97 KB | +| JsonEverything.JsonNode | 3.112 us | 1.4792 us | 0.0811 us | 0.4883 | - | 6.02 KB | +| Newtonsoft.JObject | 4.344 us | 4.3641 us | 0.2392 us | 1.1826 | 0.0305 | 14.51 KB | +| | | | | | | | +| `$.store.book[?(@.author && @.title)]` +| JsonCraft.JsonElement | 1.924 us | 0.1844 us | 0.0101 us | 0.2689 | 0.0019 | 3.3 KB | +| Hyperbee.JsonElement | 2.331 us | 0.8201 us | 0.0450 us | 0.3395 | - | 4.18 KB | +| JsonCons.JsonElement | 2.776 us | 0.5326 us | 0.0292 us | 0.4539 | 0.0038 | 5.58 KB | +| Hyperbee.JsonNode | 3.377 us | 0.4035 us | 0.0221 us | 0.6561 | 0.0076 | 8.08 KB | +| Newtonsoft.JObject | 4.779 us | 2.3452 us | 0.1285 us | 1.3199 | 0.0458 | 16.18 KB | +| JsonEverything.JsonNode | 6.403 us | 1.9211 us | 0.1053 us | 1.4648 | 0.0305 | 18.32 KB | +| | | | | | | | +| `$.store.book[?(@.category == 'fiction')]` +| JsonCraft.JsonElement | 2.038 us | 0.5141 us | 0.0282 us | 0.2747 | - | 3.38 KB | +| Hyperbee.JsonElement | 2.317 us | 0.2970 us | 0.0163 us | 0.3510 | - | 4.34 KB | +| JsonCons.JsonElement | 2.643 us | 0.8319 us | 0.0456 us | 0.4082 | 0.0038 | 5.01 KB | +| Hyperbee.JsonNode | 3.393 us | 0.3912 us | 0.0214 us | 0.6561 | - | 8.2 KB | +| Newtonsoft.JObject | 4.663 us | 1.3455 us | 0.0737 us | 1.2817 | 0.0458 | 15.74 KB | +| JsonEverything.JsonNode | 6.502 us | 4.8220 us | 0.2643 us | 1.3428 | 0.0305 | 16.49 KB | +| | | | | | | | +| `$.store.book[?(@.price < 10)].title` +| JsonCraft.JsonElement | 2.349 us | 0.1454 us | 0.0080 us | 0.2747 | - | 3.37 KB | +| Hyperbee.JsonElement | 2.379 us | 0.2508 us | 0.0137 us | 0.3548 | - | 4.35 KB | +| JsonCons.JsonElement | 3.008 us | 1.7216 us | 0.0944 us | 0.4196 | - | 5.18 KB | +| Hyperbee.JsonNode | 3.453 us | 0.6436 us | 0.0353 us | 0.6561 | - | 8.09 KB | +| Newtonsoft.JObject | 4.762 us | 1.8678 us | 0.1024 us | 1.2894 | 0.0534 | 15.89 KB | +| JsonEverything.JsonNode | 6.891 us | 1.2944 us | 0.0709 us | 1.4114 | 0.0381 | 17.38 KB | +| | | | | | | | +| `$.store.book[?(@.price > 10 && @.price < 20)]` +| JsonCraft.JsonElement | 2.637 us | 0.3234 us | 0.0177 us | 0.3090 | - | 3.82 KB | +| Hyperbee.JsonElement | 2.730 us | 0.9871 us | 0.0541 us | 0.4349 | 0.0038 | 5.37 KB | +| JsonCons.JsonElement | 3.726 us | 0.1036 us | 0.0057 us | 0.5074 | 0.0038 | 6.23 KB | +| Hyperbee.JsonNode | 4.091 us | 0.3535 us | 0.0194 us | 0.7324 | - | 9.14 KB | +| Newtonsoft.JObject | 5.167 us | 2.3846 us | 0.1307 us | 1.3580 | 0.0534 | 16.69 KB | +| JsonEverything.JsonNode | 8.309 us | 1.7991 us | 0.0986 us | 1.7700 | - | 22.02 KB | +| | | | | | | | +| `$.store.book[?@.price == 8.99]` +| Hyperbee.JsonElement | 2.249 us | 0.4713 us | 0.0258 us | 0.3357 | - | 4.15 KB | +| JsonCons.JsonElement | 2.763 us | 1.0265 us | 0.0563 us | 0.4044 | - | 4.97 KB | +| Hyperbee.JsonNode | 3.416 us | 2.2807 us | 0.1250 us | 0.6409 | - | 7.89 KB | +| JsonEverything.JsonNode | 6.221 us | 5.2637 us | 0.2885 us | 1.2512 | 0.0305 | 15.47 KB | +| JsonCraft.JsonElement | NA | NA | NA | NA | NA | NA | +| Newtonsoft.JObject | NA | NA | NA | NA | NA | NA | +| | | | | | | | +| `$.store.book['category','author']` +| JsonCraft.JsonElement | 1.575 us | 0.1797 us | 0.0099 us | 0.2403 | - | 2.95 KB | +| Hyperbee.JsonElement | 1.931 us | 0.2480 us | 0.0136 us | 0.2117 | - | 2.61 KB | +| JsonCons.JsonElement | 1.955 us | 0.6808 us | 0.0373 us | 0.2937 | 0.0019 | 3.61 KB | +| JsonEverything.JsonNode | 2.794 us | 4.9383 us | 0.2707 us | 0.4272 | - | 5.41 KB | +| Hyperbee.JsonNode | 2.973 us | 1.8205 us | 0.0998 us | 0.5188 | - | 6.42 KB | +| Newtonsoft.JObject | 4.169 us | 1.0726 us | 0.0588 us | 1.2054 | 0.0534 | 14.85 KB | +| | | | | | | | +| `$.store.book[*].author` +| JsonCraft.JsonElement | 1.718 us | 0.1185 us | 0.0065 us | 0.2136 | 0.0019 | 2.63 KB | +| Hyperbee.JsonElement | 1.910 us | 0.2440 us | 0.0134 us | 0.2480 | - | 3.05 KB | +| JsonCons.JsonElement | 1.972 us | 1.2539 us | 0.0687 us | 0.2861 | - | 3.55 KB | +| Hyperbee.JsonNode | 2.945 us | 0.7789 us | 0.0427 us | 0.5569 | 0.0076 | 6.83 KB | +| Newtonsoft.JObject | 4.415 us | 1.5198 us | 0.0833 us | 1.1902 | 0.0534 | 14.64 KB | +| JsonEverything.JsonNode | 5.322 us | 0.6684 us | 0.0366 us | 1.0071 | - | 12.45 KB | +| | | | | | | | +| `$.store.book[*]` +| JsonCraft.JsonElement | 1.428 us | 0.1454 us | 0.0080 us | 0.1984 | - | 2.45 KB | +| Hyperbee.JsonElement | 1.707 us | 0.3096 us | 0.0170 us | 0.2155 | - | 2.65 KB | +| JsonCons.JsonElement | 1.725 us | 1.0244 us | 0.0562 us | 0.2728 | - | 3.35 KB | +| Hyperbee.JsonNode | 1.948 us | 0.1280 us | 0.0070 us | 0.2575 | - | 3.17 KB | +| JsonEverything.JsonNode | 3.429 us | 3.3142 us | 0.1817 us | 0.5379 | 0.0038 | 6.61 KB | +| Newtonsoft.JObject | 4.222 us | 0.6171 us | 0.0338 us | 1.1826 | 0.0381 | 14.49 KB | +| | | | | | | | +| `$.store.book[0,1]` +| Hyperbee.JsonElement | 1.542 us | 0.2708 us | 0.0148 us | 0.1945 | - | 2.41 KB | +| JsonCraft.JsonElement | 1.570 us | 1.4388 us | 0.0789 us | 0.2136 | - | 2.64 KB | +| Hyperbee.JsonNode | 1.862 us | 0.2584 us | 0.0142 us | 0.2403 | - | 2.97 KB | +| JsonCons.JsonElement | 1.922 us | 0.6784 us | 0.0372 us | 0.3014 | - | 3.73 KB | +| JsonEverything.JsonNode | 3.016 us | 0.8618 us | 0.0472 us | 0.4883 | - | 6.07 KB | +| Newtonsoft.JObject | 4.287 us | 1.0252 us | 0.0562 us | 1.1902 | 0.0534 | 14.59 KB | +| | | | | | | | +| `$.store.book[0].title` +| Hyperbee.JsonElement | 1.457 us | 0.3260 us | 0.0179 us | 0.1755 | - | 2.17 KB | +| JsonCraft.JsonElement | 1.768 us | 1.8446 us | 0.1011 us | 0.2041 | - | 2.51 KB | +| JsonCons.JsonElement | 1.808 us | 0.5749 us | 0.0315 us | 0.2689 | - | 3.3 KB | +| Hyperbee.JsonNode | 1.926 us | 0.6973 us | 0.0382 us | 0.2937 | - | 3.63 KB | +| JsonEverything.JsonNode | 3.203 us | 0.4522 us | 0.0248 us | 0.5951 | - | 7.38 KB | +| Newtonsoft.JObject | 4.559 us | 3.8857 us | 0.2130 us | 1.1902 | 0.0458 | 14.62 KB | +| | | | | | | | +| `$.store.book[0]` +| Hyperbee.JsonElement | 1.349 us | 0.5027 us | 0.0276 us | 0.1755 | - | 2.17 KB | +| JsonCraft.JsonElement | 1.493 us | 0.5471 us | 0.0300 us | 0.1984 | - | 2.44 KB | +| Hyperbee.JsonNode | 1.657 us | 0.3633 us | 0.0199 us | 0.2327 | - | 2.86 KB | +| JsonCons.JsonElement | 1.733 us | 0.3863 us | 0.0212 us | 0.2613 | - | 3.21 KB | +| JsonEverything.JsonNode | 2.670 us | 0.6862 us | 0.0376 us | 0.4616 | 0.0038 | 5.68 KB | +| Newtonsoft.JObject | 4.155 us | 1.3012 us | 0.0713 us | 1.1749 | 0.0381 | 14.48 KB | +| | | | | | | | +| `$` +| JsonCraft.JsonElement | 1.299 us | 0.3820 us | 0.0209 us | 0.1793 | - | 2.22 KB | +| Hyperbee.JsonElement | 1.312 us | 0.2933 us | 0.0161 us | 0.1755 | - | 2.17 KB | +| Hyperbee.JsonNode | 1.322 us | 0.3885 us | 0.0213 us | 0.1411 | - | 1.75 KB | +| JsonEverything.JsonNode | 1.361 us | 0.2123 us | 0.0116 us | 0.1526 | - | 1.88 KB | +| JsonCons.JsonElement | 1.477 us | 0.6836 us | 0.0375 us | 0.2384 | - | 2.94 KB | +| Newtonsoft.JObject | 3.864 us | 0.4926 us | 0.0270 us | 1.1368 | 0.0381 | 13.98 KB | ## Credits diff --git a/src/Hyperbee.Json/Hyperbee.Json.csproj b/src/Hyperbee.Json/Hyperbee.Json.csproj index ccd44ec..3a6111e 100644 --- a/src/Hyperbee.Json/Hyperbee.Json.csproj +++ b/src/Hyperbee.Json/Hyperbee.Json.csproj @@ -1,9 +1,6 @@  - net8.0;net10.0 - enable true - Stillpoint Software, Inc. Hyperbee.Json README.md @@ -36,11 +33,8 @@ - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + \ No newline at end of file diff --git a/test/Hyperbee.Json.Benchmark/Hyperbee.Json.Benchmark.csproj b/test/Hyperbee.Json.Benchmark/Hyperbee.Json.Benchmark.csproj index 3cffe7c..198d5cd 100644 --- a/test/Hyperbee.Json.Benchmark/Hyperbee.Json.Benchmark.csproj +++ b/test/Hyperbee.Json.Benchmark/Hyperbee.Json.Benchmark.csproj @@ -2,8 +2,6 @@ Exe - net10.0 - enable false @@ -14,26 +12,18 @@ - - - - - - - + + + + + + + + + - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - diff --git a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.FilterExpressionParserEvaluator-report-jsonpath.md b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.FilterExpressionParserEvaluator-report-jsonpath.md index 8bd0e77..7d6a5d8 100644 --- a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.FilterExpressionParserEvaluator-report-jsonpath.md +++ b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.FilterExpressionParserEvaluator-report-jsonpath.md @@ -3,7 +3,7 @@ BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7462/25H2/2025Update/HudsonValley2) 12th Gen Intel Core i9-12900HK 2.50GHz, 1 CPU, 20 logical and 14 physical cores .NET SDK 10.0.101 - [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 DEBUG + [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 [AttachedDebugger] ShortRun : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 diff --git a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonDiffBenchmark-report-jsonpath.md b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonDiffBenchmark-report-jsonpath.md index 1c12c10..7b2feea 100644 --- a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonDiffBenchmark-report-jsonpath.md +++ b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonDiffBenchmark-report-jsonpath.md @@ -3,15 +3,15 @@ BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7462/25H2/2025Update/HudsonValley2) 12th Gen Intel Core i9-12900HK 2.50GHz, 1 CPU, 20 logical and 14 physical cores .NET SDK 10.0.101 - [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 DEBUG + [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 [AttachedDebugger] ShortRun : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 - | Method | Mean | Error | StdDev | Allocated - | :-------------------- | --------: | ---------: | --------: | ---------: - | JsonDiff_JsonNode | 438.2 ns | 45.95 ns | 2.52 ns | 1.3 KB - | JsonDiff_JsonElement | 663.2 ns | 538.12 ns | 29.50 ns | 1.93 KB - | | | | | - | JsonDiff_JsonNode | 347.0 ns | 117.11 ns | 6.42 ns | 1.2 KB - | JsonDiff_JsonElement | 472.1 ns | 175.95 ns | 9.64 ns | 1.66 KB + | Method | Mean | Error | StdDev | Allocated + | :-------------------- | --------: | ---------: | -------: | ---------: + | JsonDiff_JsonNode | 431.2 ns | 109.04 ns | 5.98 ns | 1.3 KB + | JsonDiff_JsonElement | 636.4 ns | 70.49 ns | 3.86 ns | 1.93 KB + | | | | | + | JsonDiff_JsonNode | 335.6 ns | 80.57 ns | 4.42 ns | 1.2 KB + | JsonDiff_JsonElement | 507.5 ns | 180.81 ns | 9.91 ns | 1.66 KB ``` diff --git a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPatchBenchmark-report-jsonpath.md b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPatchBenchmark-report-jsonpath.md index 735405f..0cfdd79 100644 --- a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPatchBenchmark-report-jsonpath.md +++ b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPatchBenchmark-report-jsonpath.md @@ -3,14 +3,14 @@ BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7462/25H2/2025Update/HudsonValley2) 12th Gen Intel Core i9-12900HK 2.50GHz, 1 CPU, 20 logical and 14 physical cores .NET SDK 10.0.101 - [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 DEBUG + [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 [AttachedDebugger] ShortRun : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 - | Method | Mean | Error | StdDev | Allocated - | :----------------------- | ---------: | ---------: | ---------: | ---------: - | Hyperbee_JsonElement | 79.45 ns | 34.78 ns | 1.906 ns | 392 B - | Hyperbee_JsonNode | 84.85 ns | 64.17 ns | 3.517 ns | 392 B - | JsonEverything_JsonNode | 188.61 ns | 319.11 ns | 17.491 ns | 968 B - | AspNetCore_JsonNode | 353.32 ns | 106.43 ns | 5.834 ns | 1024 B + | Method | Mean | Error | StdDev | Allocated + | :----------------------- | ---------: | ---------: | --------: | ---------: + | Hyperbee_JsonNode | 78.55 ns | 14.146 ns | 0.775 ns | 392 B + | Hyperbee_JsonElement | 83.08 ns | 11.340 ns | 0.622 ns | 392 B + | JsonEverything_JsonNode | 184.07 ns | 2.770 ns | 0.152 ns | 968 B + | AspNetCore_JsonNode | 325.06 ns | 51.946 ns | 2.847 ns | 1024 B ``` diff --git a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPathParseAndSelectEvaluator-report-jsonpath.md b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPathParseAndSelectEvaluator-report-jsonpath.md index b42d0de..8b4db1d 100644 --- a/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPathParseAndSelectEvaluator-report-jsonpath.md +++ b/test/Hyperbee.Json.Benchmark/benchmark/results/Hyperbee.Json.Benchmark.JsonPathParseAndSelectEvaluator-report-jsonpath.md @@ -3,211 +3,211 @@ BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7462/25H2/2025Update/HudsonValley2) 12th Gen Intel Core i9-12900HK 2.50GHz, 1 CPU, 20 logical and 14 physical cores .NET SDK 10.0.101 - [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 DEBUG + [Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 [AttachedDebugger] ShortRun : .NET 10.0.1 (10.0.1, 10.0.125.57005), X64 RyuJIT x86-64-v3 - | Method | Mean | Error | StdDev | Allocated - | :----------------------- | ---------: | ---------: | ---------: | ---------: + | Method | Mean | Error | StdDev | Allocated + | :----------------------- | ---------: | ----------: | ---------: | ---------: | `$..[?(@.price < 10)]` - | JsonCraft.JsonElement | 3.049 μs | 0.7626 μs | 0.0418 μs | 3.59 KB - | Hyperbee.JsonElement | 5.400 μs | 0.5197 μs | 0.0285 μs | 15.84 KB - | Hyperbee.JsonNode | 5.824 μs | 1.8214 μs | 0.0998 μs | 18.38 KB - | JsonCons.JsonElement | 5.955 μs | 2.4616 μs | 0.1349 μs | 12.73 KB - | Newtonsoft.JObject | 8.838 μs | 1.3040 μs | 0.0715 μs | 25.86 KB - | JsonEverything.JsonNode | 19.543 μs | 9.1216 μs | 0.5000 μs | 48.15 KB - | | | | | + | JsonCraft.JsonElement | 2.957 μs | 1.1397 μs | 0.0625 μs | 3.59 KB + | Hyperbee.JsonElement | 5.221 μs | 0.8505 μs | 0.0466 μs | 15.84 KB + | JsonCons.JsonElement | 5.518 μs | 1.3367 μs | 0.0733 μs | 12.73 KB + | Hyperbee.JsonNode | 5.915 μs | 0.8714 μs | 0.0478 μs | 18.38 KB + | Newtonsoft.JObject | 8.009 μs | 1.7612 μs | 0.0965 μs | 25.86 KB + | JsonEverything.JsonNode | 17.850 μs | 12.0238 μs | 0.6591 μs | 48.15 KB + | | | | | | `$..['bicycle','price']` - | JsonCraft.JsonElement | 2.451 μs | 0.3691 μs | 0.0202 μs | 4.01 KB - | Hyperbee.JsonElement | 2.689 μs | 0.6920 μs | 0.0379 μs | 5.12 KB - | JsonCons.JsonElement | 3.217 μs | 0.4797 μs | 0.0263 μs | 7.13 KB - | Hyperbee.JsonNode | 3.435 μs | 0.8745 μs | 0.0479 μs | 8.84 KB - | Newtonsoft.JObject | 5.548 μs | 1.7475 μs | 0.0958 μs | 14.55 KB - | JsonEverything.JsonNode | 12.999 μs | 0.5857 μs | 0.0321 μs | 28.5 KB - | | | | | + | JsonCraft.JsonElement | 2.309 μs | 0.2498 μs | 0.0137 μs | 4.01 KB + | Hyperbee.JsonElement | 2.701 μs | 1.0824 μs | 0.0593 μs | 5.12 KB + | JsonCons.JsonElement | 3.058 μs | 0.3820 μs | 0.0209 μs | 7.09 KB + | Hyperbee.JsonNode | 3.626 μs | 1.3209 μs | 0.0724 μs | 8.84 KB + | Newtonsoft.JObject | 4.990 μs | 1.5961 μs | 0.0875 μs | 14.55 KB + | JsonEverything.JsonNode | 12.183 μs | 2.7932 μs | 0.1531 μs | 28.5 KB + | | | | | | `$..*` - | JsonCraft.JsonElement | 2.110 μs | 0.2534 μs | 0.0139 μs | 2.88 KB - | Hyperbee.JsonElement | 2.478 μs | 0.3201 μs | 0.0175 μs | 6.45 KB - | Hyperbee.JsonNode | 3.434 μs | 0.6438 μs | 0.0353 μs | 9.54 KB - | JsonCons.JsonElement | 3.450 μs | 0.5528 μs | 0.0303 μs | 8.45 KB - | Newtonsoft.JObject | 5.217 μs | 0.4099 μs | 0.0225 μs | 14.19 KB - | JsonEverything.JsonNode | 17.330 μs | 1.5400 μs | 0.0844 μs | 33.97 KB - | | | | | + | JsonCraft.JsonElement | 2.023 μs | 0.4743 μs | 0.0260 μs | 2.88 KB + | Hyperbee.JsonElement | 2.390 μs | 0.7132 μs | 0.0391 μs | 6.45 KB + | JsonCons.JsonElement | 3.239 μs | 0.8771 μs | 0.0481 μs | 8.45 KB + | Hyperbee.JsonNode | 3.864 μs | 2.6714 μs | 0.1464 μs | 9.54 KB + | Newtonsoft.JObject | 4.864 μs | 0.7073 μs | 0.0388 μs | 14.19 KB + | JsonEverything.JsonNode | 17.367 μs | 10.7988 μs | 0.5919 μs | 33.97 KB + | | | | | | `$..author` - | JsonCraft.JsonElement | 2.352 μs | 0.4147 μs | 0.0227 μs | 2.88 KB - | Hyperbee.JsonElement | 2.359 μs | 0.2998 μs | 0.0164 μs | 5.1 KB - | JsonCons.JsonElement | 2.826 μs | 1.7249 μs | 0.0945 μs | 5.47 KB - | Hyperbee.JsonNode | 3.290 μs | 2.1900 μs | 0.1200 μs | 8.64 KB - | Newtonsoft.JObject | 5.246 μs | 0.8047 μs | 0.0441 μs | 14.2 KB - | JsonEverything.JsonNode | 12.429 μs | 6.1835 μs | 0.3389 μs | 26.1 KB - | | | | | + | JsonCraft.JsonElement | 2.071 μs | 0.8571 μs | 0.0470 μs | 2.88 KB + | Hyperbee.JsonElement | 2.275 μs | 0.5597 μs | 0.0307 μs | 5.1 KB + | JsonCons.JsonElement | 2.572 μs | 0.2856 μs | 0.0157 μs | 5.47 KB + | Hyperbee.JsonNode | 3.226 μs | 0.6372 μs | 0.0349 μs | 8.64 KB + | Newtonsoft.JObject | 4.793 μs | 3.7445 μs | 0.2053 μs | 14.2 KB + | JsonEverything.JsonNode | 11.786 μs | 2.5761 μs | 0.1412 μs | 26.1 KB + | | | | | | `$..book[?@.isbn]` - | Hyperbee.JsonElement | 2.883 μs | 1.0678 μs | 0.0585 μs | 6.14 KB - | JsonCons.JsonElement | 3.362 μs | 0.8878 μs | 0.0487 μs | 7.16 KB - | Hyperbee.JsonNode | 3.965 μs | 3.7942 μs | 0.2080 μs | 9.64 KB - | JsonEverything.JsonNode | 13.766 μs | 1.2953 μs | 0.0710 μs | 29.98 KB - | JsonCraft.JsonElement | NA | NA | NA | NA - | Newtonsoft.JObject | NA | NA | NA | NA - | | | | | + | Hyperbee.JsonElement | 2.814 μs | 0.7079 μs | 0.0388 μs | 6.14 KB + | JsonCons.JsonElement | 3.348 μs | 0.4197 μs | 0.0230 μs | 7.16 KB + | Hyperbee.JsonNode | 3.587 μs | 1.1927 μs | 0.0654 μs | 9.64 KB + | JsonEverything.JsonNode | 12.860 μs | 6.6350 μs | 0.3637 μs | 29.98 KB + | JsonCraft.JsonElement | NA | NA | NA | NA + | Newtonsoft.JObject | NA | NA | NA | NA + | | | | | | `$..book[?@.price == 8.99 && @.category == 'fiction']` - | Hyperbee.JsonElement | 3.708 μs | 1.8637 μs | 0.1022 μs | 8.28 KB - | Hyperbee.JsonNode | 4.746 μs | 0.9875 μs | 0.0541 μs | 11.91 KB - | JsonCons.JsonElement | 4.845 μs | 1.3375 μs | 0.0733 μs | 8.48 KB - | JsonEverything.JsonNode | 17.256 μs | 1.0914 μs | 0.0598 μs | 39.27 KB - | JsonCraft.JsonElement | NA | NA | NA | NA - | Newtonsoft.JObject | NA | NA | NA | NA - | | | | | + | Hyperbee.JsonElement | 3.599 μs | 1.1407 μs | 0.0625 μs | 8.28 KB + | Hyperbee.JsonNode | 4.593 μs | 2.6977 μs | 0.1479 μs | 11.91 KB + | JsonCons.JsonElement | 4.684 μs | 3.2355 μs | 0.1774 μs | 8.48 KB + | JsonEverything.JsonNode | 17.000 μs | 14.9488 μs | 0.8194 μs | 39.52 KB + | JsonCraft.JsonElement | NA | NA | NA | NA + | Newtonsoft.JObject | NA | NA | NA | NA + | | | | | | `$..book[0,1]` - | JsonCraft.JsonElement | 2.345 μs | 0.1935 μs | 0.0106 μs | 3.09 KB - | Hyperbee.JsonElement | 2.417 μs | 0.0175 μs | 0.0010 μs | 5.1 KB - | JsonCons.JsonElement | 3.005 μs | 0.9922 μs | 0.0544 μs | 6.1 KB - | Hyperbee.JsonNode | 3.163 μs | 1.0620 μs | 0.0582 μs | 8.64 KB - | Newtonsoft.JObject | 5.089 μs | 0.8914 μs | 0.0489 μs | 14.45 KB - | JsonEverything.JsonNode | 12.339 μs | 0.9570 μs | 0.0525 μs | 26.41 KB - | | | | | + | JsonCraft.JsonElement | 2.184 μs | 1.1145 μs | 0.0611 μs | 3.09 KB + | Hyperbee.JsonElement | 2.316 μs | 0.6324 μs | 0.0347 μs | 5.1 KB + | JsonCons.JsonElement | 2.973 μs | 3.2806 μs | 0.1798 μs | 6.06 KB + | Hyperbee.JsonNode | 3.363 μs | 2.4201 μs | 0.1327 μs | 8.64 KB + | Newtonsoft.JObject | 4.709 μs | 1.1244 μs | 0.0616 μs | 14.45 KB + | JsonEverything.JsonNode | 11.585 μs | 1.1525 μs | 0.0632 μs | 26.41 KB + | | | | | | `$..book[0]` - | JsonCraft.JsonElement | 2.241 μs | 0.1554 μs | 0.0085 μs | 3 KB - | Hyperbee.JsonElement | 2.271 μs | 1.0724 μs | 0.0588 μs | 5.1 KB - | JsonCons.JsonElement | 2.708 μs | 0.8340 μs | 0.0457 μs | 5.55 KB - | Hyperbee.JsonNode | 3.528 μs | 0.2841 μs | 0.0156 μs | 8.64 KB - | Newtonsoft.JObject | 5.005 μs | 0.3486 μs | 0.0191 μs | 14.33 KB - | JsonEverything.JsonNode | 11.781 μs | 1.7173 μs | 0.0941 μs | 26.02 KB - | | | | | + | JsonCraft.JsonElement | 2.097 μs | 0.7390 μs | 0.0405 μs | 3 KB + | Hyperbee.JsonElement | 2.417 μs | 0.4037 μs | 0.0221 μs | 5.1 KB + | JsonCons.JsonElement | 2.767 μs | 1.0765 μs | 0.0590 μs | 5.59 KB + | Hyperbee.JsonNode | 3.439 μs | 2.6110 μs | 0.1431 μs | 8.64 KB + | Newtonsoft.JObject | 4.730 μs | 0.4614 μs | 0.0253 μs | 14.33 KB + | JsonEverything.JsonNode | 11.404 μs | 1.6551 μs | 0.0907 μs | 26.02 KB + | | | | | | `$.store..price` - | Hyperbee.JsonElement | 2.293 μs | 0.4706 μs | 0.0258 μs | 4.73 KB - | JsonCraft.JsonElement | 2.363 μs | 1.0577 μs | 0.0580 μs | 3.13 KB - | JsonCons.JsonElement | 2.720 μs | 2.0514 μs | 0.1124 μs | 5.57 KB - | Hyperbee.JsonNode | 3.181 μs | 0.5370 μs | 0.0294 μs | 8.38 KB - | Newtonsoft.JObject | 5.083 μs | 0.4737 μs | 0.0260 μs | 14.34 KB - | JsonEverything.JsonNode | 13.102 μs | 2.1212 μs | 0.1163 μs | 26.63 KB - | | | | | + | Hyperbee.JsonElement | 2.174 μs | 0.2046 μs | 0.0112 μs | 4.73 KB + | JsonCraft.JsonElement | 2.174 μs | 0.9541 μs | 0.0523 μs | 3.13 KB + | JsonCons.JsonElement | 2.657 μs | 1.2199 μs | 0.0669 μs | 5.57 KB + | Hyperbee.JsonNode | 3.219 μs | 1.6130 μs | 0.0884 μs | 8.38 KB + | Newtonsoft.JObject | 4.751 μs | 0.3461 μs | 0.0190 μs | 14.34 KB + | JsonEverything.JsonNode | 12.312 μs | 4.6283 μs | 0.2537 μs | 26.63 KB + | | | | | | `$.store.*` - | JsonCraft.JsonElement | 1.561 μs | 0.1662 μs | 0.0091 μs | 2.49 KB - | Hyperbee.JsonElement | 1.602 μs | 0.6889 μs | 0.0378 μs | 2.81 KB - | JsonCons.JsonElement | 1.693 μs | 0.7460 μs | 0.0409 μs | 3.27 KB - | Hyperbee.JsonNode | 1.784 μs | 0.6002 μs | 0.0329 μs | 2.9 KB - | JsonEverything.JsonNode | 2.395 μs | 0.3007 μs | 0.0165 μs | 4.8 KB - | Newtonsoft.JObject | 4.664 μs | 0.6593 μs | 0.0361 μs | 14.43 KB - | | | | | + | JsonCraft.JsonElement | 1.415 μs | 0.5540 μs | 0.0304 μs | 2.49 KB + | Hyperbee.JsonElement | 1.564 μs | 0.4252 μs | 0.0233 μs | 2.81 KB + | JsonCons.JsonElement | 1.699 μs | 0.5680 μs | 0.0311 μs | 3.27 KB + | Hyperbee.JsonNode | 1.762 μs | 0.0234 μs | 0.0013 μs | 2.9 KB + | JsonEverything.JsonNode | 2.264 μs | 0.3401 μs | 0.0186 μs | 4.8 KB + | Newtonsoft.JObject | 4.142 μs | 0.4524 μs | 0.0248 μs | 14.43 KB + | | | | | | `$.store.bicycle.color` - | Hyperbee.JsonElement | 1.454 μs | 0.6877 μs | 0.0377 μs | 2.17 KB - | JsonCraft.JsonElement | 1.585 μs | 0.7476 μs | 0.0410 μs | 2.45 KB - | Hyperbee.JsonNode | 1.695 μs | 0.7429 μs | 0.0407 μs | 2.88 KB - | JsonCons.JsonElement | 1.816 μs | 1.7814 μs | 0.0976 μs | 3.23 KB - | JsonEverything.JsonNode | 2.892 μs | 0.3155 μs | 0.0173 μs | 5.74 KB - | Newtonsoft.JObject | 4.582 μs | 0.7337 μs | 0.0402 μs | 14.49 KB - | | | | | + | Hyperbee.JsonElement | 1.415 μs | 0.3898 μs | 0.0214 μs | 2.17 KB + | JsonCraft.JsonElement | 1.532 μs | 0.2165 μs | 0.0119 μs | 2.45 KB + | JsonCons.JsonElement | 1.671 μs | 0.2610 μs | 0.0143 μs | 3.23 KB + | Hyperbee.JsonNode | 1.706 μs | 0.4849 μs | 0.0266 μs | 2.88 KB + | JsonEverything.JsonNode | 2.629 μs | 1.6792 μs | 0.0920 μs | 5.74 KB + | Newtonsoft.JObject | 4.336 μs | 1.2294 μs | 0.0674 μs | 14.49 KB + | | | | | | `$.store.book[-1:]` - | Hyperbee.JsonElement | 1.579 μs | 0.5378 μs | 0.0295 μs | 2.41 KB - | JsonCraft.JsonElement | 1.622 μs | 0.1762 μs | 0.0097 μs | 2.58 KB - | Hyperbee.JsonNode | 1.809 μs | 0.3378 μs | 0.0185 μs | 2.97 KB - | JsonCons.JsonElement | 1.882 μs | 0.5619 μs | 0.0308 μs | 3.52 KB - | JsonEverything.JsonNode | 2.806 μs | 0.3959 μs | 0.0217 μs | 5.72 KB - | Newtonsoft.JObject | 4.663 μs | 0.5645 μs | 0.0309 μs | 14.52 KB - | | | | | + | JsonCraft.JsonElement | 1.479 μs | 0.1113 μs | 0.0061 μs | 2.58 KB + | Hyperbee.JsonElement | 1.515 μs | 0.3284 μs | 0.0180 μs | 2.41 KB + | JsonCons.JsonElement | 1.813 μs | 0.0749 μs | 0.0041 μs | 3.52 KB + | Hyperbee.JsonNode | 1.821 μs | 0.1880 μs | 0.0103 μs | 2.97 KB + | JsonEverything.JsonNode | 2.686 μs | 0.5270 μs | 0.0289 μs | 5.72 KB + | Newtonsoft.JObject | 4.390 μs | 0.6167 μs | 0.0338 μs | 14.52 KB + | | | | | | `$.store.book[:2]` - | Hyperbee.JsonElement | 1.604 μs | 0.5879 μs | 0.0322 μs | 2.41 KB - | JsonCraft.JsonElement | 1.637 μs | 0.0647 μs | 0.0035 μs | 2.58 KB - | Hyperbee.JsonNode | 1.826 μs | 0.1527 μs | 0.0084 μs | 2.97 KB - | JsonCons.JsonElement | 1.871 μs | 0.6744 μs | 0.0370 μs | 3.54 KB - | JsonEverything.JsonNode | 3.068 μs | 0.0441 μs | 0.0024 μs | 6.02 KB - | Newtonsoft.JObject | 5.069 μs | 5.6079 μs | 0.3074 μs | 14.51 KB - | | | | | + | JsonCraft.JsonElement | 1.547 μs | 0.3302 μs | 0.0181 μs | 2.58 KB + | Hyperbee.JsonElement | 1.554 μs | 1.0503 μs | 0.0576 μs | 2.41 KB + | JsonCons.JsonElement | 1.867 μs | 0.9304 μs | 0.0510 μs | 3.54 KB + | Hyperbee.JsonNode | 1.869 μs | 0.2955 μs | 0.0162 μs | 2.97 KB + | JsonEverything.JsonNode | 3.112 μs | 1.4792 μs | 0.0811 μs | 6.02 KB + | Newtonsoft.JObject | 4.344 μs | 4.3641 μs | 0.2392 μs | 14.51 KB + | | | | | | `$.store.book[?(@.author && @.title)]` - | JsonCraft.JsonElement | 2.007 μs | 0.5824 μs | 0.0319 μs | 3.3 KB - | Hyperbee.JsonElement | 2.387 μs | 0.5434 μs | 0.0298 μs | 4.18 KB - | JsonCons.JsonElement | 2.970 μs | 0.5634 μs | 0.0309 μs | 5.58 KB - | Hyperbee.JsonNode | 3.636 μs | 1.5759 μs | 0.0864 μs | 8.08 KB - | Newtonsoft.JObject | 5.449 μs | 1.4272 μs | 0.0782 μs | 16.18 KB - | JsonEverything.JsonNode | 7.147 μs | 3.7089 μs | 0.2033 μs | 18.32 KB - | | | | | + | JsonCraft.JsonElement | 1.924 μs | 0.1844 μs | 0.0101 μs | 3.3 KB + | Hyperbee.JsonElement | 2.331 μs | 0.8201 μs | 0.0450 μs | 4.18 KB + | JsonCons.JsonElement | 2.776 μs | 0.5326 μs | 0.0292 μs | 5.58 KB + | Hyperbee.JsonNode | 3.377 μs | 0.4035 μs | 0.0221 μs | 8.08 KB + | Newtonsoft.JObject | 4.779 μs | 2.3452 μs | 0.1285 μs | 16.18 KB + | JsonEverything.JsonNode | 6.403 μs | 1.9211 μs | 0.1053 μs | 18.32 KB + | | | | | | `$.store.book[?(@.category == 'fiction')]` - | JsonCraft.JsonElement | 2.243 μs | 1.6372 μs | 0.0897 μs | 3.38 KB - | JsonCons.JsonElement | 2.800 μs | 0.8079 μs | 0.0443 μs | 5.01 KB - | Hyperbee.JsonElement | 2.825 μs | 2.4544 μs | 0.1345 μs | 4.34 KB - | Hyperbee.JsonNode | 3.391 μs | 3.0949 μs | 0.1696 μs | 8.2 KB - | Newtonsoft.JObject | 5.009 μs | 0.9350 μs | 0.0513 μs | 15.74 KB - | JsonEverything.JsonNode | 7.002 μs | 0.9434 μs | 0.0517 μs | 16.49 KB - | | | | | + | JsonCraft.JsonElement | 2.038 μs | 0.5141 μs | 0.0282 μs | 3.38 KB + | Hyperbee.JsonElement | 2.317 μs | 0.2970 μs | 0.0163 μs | 4.34 KB + | JsonCons.JsonElement | 2.643 μs | 0.8319 μs | 0.0456 μs | 5.01 KB + | Hyperbee.JsonNode | 3.393 μs | 0.3912 μs | 0.0214 μs | 8.2 KB + | Newtonsoft.JObject | 4.663 μs | 1.3455 μs | 0.0737 μs | 15.74 KB + | JsonEverything.JsonNode | 6.502 μs | 4.8220 μs | 0.2643 μs | 16.49 KB + | | | | | | `$.store.book[?(@.price < 10)].title` - | JsonCraft.JsonElement | 2.357 μs | 1.1758 μs | 0.0644 μs | 3.37 KB - | Hyperbee.JsonElement | 2.496 μs | 1.2422 μs | 0.0681 μs | 4.35 KB - | JsonCons.JsonElement | 2.954 μs | 1.3447 μs | 0.0737 μs | 5.18 KB - | Hyperbee.JsonNode | 3.466 μs | 0.7381 μs | 0.0405 μs | 8.09 KB - | Newtonsoft.JObject | 5.209 μs | 1.2339 μs | 0.0676 μs | 15.89 KB - | JsonEverything.JsonNode | 7.547 μs | 1.3411 μs | 0.0735 μs | 17.38 KB - | | | | | + | JsonCraft.JsonElement | 2.349 μs | 0.1454 μs | 0.0080 μs | 3.37 KB + | Hyperbee.JsonElement | 2.379 μs | 0.2508 μs | 0.0137 μs | 4.35 KB + | JsonCons.JsonElement | 3.008 μs | 1.7216 μs | 0.0944 μs | 5.18 KB + | Hyperbee.JsonNode | 3.453 μs | 0.6436 μs | 0.0353 μs | 8.09 KB + | Newtonsoft.JObject | 4.762 μs | 1.8678 μs | 0.1024 μs | 15.89 KB + | JsonEverything.JsonNode | 6.891 μs | 1.2944 μs | 0.0709 μs | 17.38 KB + | | | | | | `$.store.book[?(@.price > 10 && @.price < 20)]` - | JsonCraft.JsonElement | 2.798 μs | 1.2832 μs | 0.0703 μs | 3.82 KB - | Hyperbee.JsonElement | 3.067 μs | 1.9850 μs | 0.1088 μs | 5.37 KB - | Hyperbee.JsonNode | 3.827 μs | 2.2293 μs | 0.1222 μs | 9.14 KB - | JsonCons.JsonElement | 4.398 μs | 3.5937 μs | 0.1970 μs | 6.23 KB - | Newtonsoft.JObject | 5.358 μs | 2.0125 μs | 0.1103 μs | 16.69 KB - | JsonEverything.JsonNode | 9.003 μs | 2.3392 μs | 0.1282 μs | 22.27 KB - | | | | | + | JsonCraft.JsonElement | 2.637 μs | 0.3234 μs | 0.0177 μs | 3.82 KB + | Hyperbee.JsonElement | 2.730 μs | 0.9871 μs | 0.0541 μs | 5.37 KB + | JsonCons.JsonElement | 3.726 μs | 0.1036 μs | 0.0057 μs | 6.23 KB + | Hyperbee.JsonNode | 4.091 μs | 0.3535 μs | 0.0194 μs | 9.14 KB + | Newtonsoft.JObject | 5.167 μs | 2.3846 μs | 0.1307 μs | 16.69 KB + | JsonEverything.JsonNode | 8.309 μs | 1.7991 μs | 0.0986 μs | 22.02 KB + | | | | | | `$.store.book[?@.price == 8.99]` - | Hyperbee.JsonElement | 2.291 μs | 1.2891 μs | 0.0707 μs | 4.15 KB - | JsonCons.JsonElement | 2.826 μs | 1.0191 μs | 0.0559 μs | 4.97 KB - | Hyperbee.JsonNode | 3.630 μs | 3.3549 μs | 0.1839 μs | 7.89 KB - | JsonEverything.JsonNode | 6.450 μs | 1.0062 μs | 0.0552 μs | 15.47 KB - | JsonCraft.JsonElement | NA | NA | NA | NA - | Newtonsoft.JObject | NA | NA | NA | NA - | | | | | + | Hyperbee.JsonElement | 2.249 μs | 0.4713 μs | 0.0258 μs | 4.15 KB + | JsonCons.JsonElement | 2.763 μs | 1.0265 μs | 0.0563 μs | 4.97 KB + | Hyperbee.JsonNode | 3.416 μs | 2.2807 μs | 0.1250 μs | 7.89 KB + | JsonEverything.JsonNode | 6.221 μs | 5.2637 μs | 0.2885 μs | 15.47 KB + | JsonCraft.JsonElement | NA | NA | NA | NA + | Newtonsoft.JObject | NA | NA | NA | NA + | | | | | | `$.store.book['category','author']` - | JsonCraft.JsonElement | 1.650 μs | 0.2189 μs | 0.0120 μs | 2.95 KB - | JsonCons.JsonElement | 1.862 μs | 0.1098 μs | 0.0060 μs | 3.61 KB - | Hyperbee.JsonElement | 1.988 μs | 0.8489 μs | 0.0465 μs | 2.61 KB - | JsonEverything.JsonNode | 2.622 μs | 0.8004 μs | 0.0439 μs | 5.41 KB - | Hyperbee.JsonNode | 3.215 μs | 1.1826 μs | 0.0648 μs | 6.42 KB - | Newtonsoft.JObject | 4.681 μs | 0.5122 μs | 0.0281 μs | 14.85 KB - | | | | | + | JsonCraft.JsonElement | 1.575 μs | 0.1797 μs | 0.0099 μs | 2.95 KB + | Hyperbee.JsonElement | 1.931 μs | 0.2480 μs | 0.0136 μs | 2.61 KB + | JsonCons.JsonElement | 1.955 μs | 0.6808 μs | 0.0373 μs | 3.61 KB + | JsonEverything.JsonNode | 2.794 μs | 4.9383 μs | 0.2707 μs | 5.41 KB + | Hyperbee.JsonNode | 2.973 μs | 1.8205 μs | 0.0998 μs | 6.42 KB + | Newtonsoft.JObject | 4.169 μs | 1.0726 μs | 0.0588 μs | 14.85 KB + | | | | | | `$.store.book[*].author` - | JsonCraft.JsonElement | 1.729 μs | 0.7445 μs | 0.0408 μs | 2.63 KB - | JsonCons.JsonElement | 1.909 μs | 0.4640 μs | 0.0254 μs | 3.55 KB - | Hyperbee.JsonElement | 1.993 μs | 0.3660 μs | 0.0201 μs | 3.05 KB - | Hyperbee.JsonNode | 2.885 μs | 2.4990 μs | 0.1370 μs | 6.83 KB - | Newtonsoft.JObject | 4.894 μs | 6.5976 μs | 0.3616 μs | 14.64 KB - | JsonEverything.JsonNode | 5.893 μs | 1.3873 μs | 0.0760 μs | 12.45 KB - | | | | | + | JsonCraft.JsonElement | 1.718 μs | 0.1185 μs | 0.0065 μs | 2.63 KB + | Hyperbee.JsonElement | 1.910 μs | 0.2440 μs | 0.0134 μs | 3.05 KB + | JsonCons.JsonElement | 1.972 μs | 1.2539 μs | 0.0687 μs | 3.55 KB + | Hyperbee.JsonNode | 2.945 μs | 0.7789 μs | 0.0427 μs | 6.83 KB + | Newtonsoft.JObject | 4.415 μs | 1.5198 μs | 0.0833 μs | 14.64 KB + | JsonEverything.JsonNode | 5.322 μs | 0.6684 μs | 0.0366 μs | 12.45 KB + | | | | | | `$.store.book[*]` - | JsonCraft.JsonElement | 1.578 μs | 0.8516 μs | 0.0467 μs | 2.45 KB - | JsonCons.JsonElement | 1.692 μs | 0.8482 μs | 0.0465 μs | 3.35 KB - | Hyperbee.JsonElement | 1.738 μs | 0.3719 μs | 0.0204 μs | 2.65 KB - | Hyperbee.JsonNode | 1.923 μs | 0.7320 μs | 0.0401 μs | 3.17 KB - | JsonEverything.JsonNode | 3.526 μs | 0.0963 μs | 0.0053 μs | 6.61 KB - | Newtonsoft.JObject | 4.752 μs | 0.2905 μs | 0.0159 μs | 14.49 KB - | | | | | + | JsonCraft.JsonElement | 1.428 μs | 0.1454 μs | 0.0080 μs | 2.45 KB + | Hyperbee.JsonElement | 1.707 μs | 0.3096 μs | 0.0170 μs | 2.65 KB + | JsonCons.JsonElement | 1.725 μs | 1.0244 μs | 0.0562 μs | 3.35 KB + | Hyperbee.JsonNode | 1.948 μs | 0.1280 μs | 0.0070 μs | 3.17 KB + | JsonEverything.JsonNode | 3.429 μs | 3.3142 μs | 0.1817 μs | 6.61 KB + | Newtonsoft.JObject | 4.222 μs | 0.6171 μs | 0.0338 μs | 14.49 KB + | | | | | | `$.store.book[0,1]` - | Hyperbee.JsonElement | 1.560 μs | 0.6522 μs | 0.0358 μs | 2.41 KB - | JsonCraft.JsonElement | 1.675 μs | 0.3241 μs | 0.0178 μs | 2.64 KB - | JsonCons.JsonElement | 1.910 μs | 0.3014 μs | 0.0165 μs | 3.73 KB - | Hyperbee.JsonNode | 1.976 μs | 1.1111 μs | 0.0609 μs | 2.97 KB - | JsonEverything.JsonNode | 3.071 μs | 0.1558 μs | 0.0085 μs | 6.07 KB - | Newtonsoft.JObject | 4.870 μs | 0.8053 μs | 0.0441 μs | 14.59 KB - | | | | | + | Hyperbee.JsonElement | 1.542 μs | 0.2708 μs | 0.0148 μs | 2.41 KB + | JsonCraft.JsonElement | 1.570 μs | 1.4388 μs | 0.0789 μs | 2.64 KB + | Hyperbee.JsonNode | 1.862 μs | 0.2584 μs | 0.0142 μs | 2.97 KB + | JsonCons.JsonElement | 1.922 μs | 0.6784 μs | 0.0372 μs | 3.73 KB + | JsonEverything.JsonNode | 3.016 μs | 0.8618 μs | 0.0472 μs | 6.07 KB + | Newtonsoft.JObject | 4.287 μs | 1.0252 μs | 0.0562 μs | 14.59 KB + | | | | | | `$.store.book[0].title` - | Hyperbee.JsonElement | 1.515 μs | 0.1457 μs | 0.0080 μs | 2.17 KB - | JsonCraft.JsonElement | 1.713 μs | 1.1282 μs | 0.0618 μs | 2.51 KB - | JsonCons.JsonElement | 1.869 μs | 0.0938 μs | 0.0051 μs | 3.3 KB - | Hyperbee.JsonNode | 1.945 μs | 0.2311 μs | 0.0127 μs | 3.6 KB - | JsonEverything.JsonNode | 3.451 μs | 0.4020 μs | 0.0220 μs | 7.38 KB - | Newtonsoft.JObject | 4.706 μs | 1.4286 μs | 0.0783 μs | 14.62 KB - | | | | | + | Hyperbee.JsonElement | 1.457 μs | 0.3260 μs | 0.0179 μs | 2.17 KB + | JsonCraft.JsonElement | 1.768 μs | 1.8446 μs | 0.1011 μs | 2.51 KB + | JsonCons.JsonElement | 1.808 μs | 0.5749 μs | 0.0315 μs | 3.3 KB + | Hyperbee.JsonNode | 1.926 μs | 0.6973 μs | 0.0382 μs | 3.63 KB + | JsonEverything.JsonNode | 3.203 μs | 0.4522 μs | 0.0248 μs | 7.38 KB + | Newtonsoft.JObject | 4.559 μs | 3.8857 μs | 0.2130 μs | 14.62 KB + | | | | | | `$.store.book[0]` - | Hyperbee.JsonElement | 1.392 μs | 0.6219 μs | 0.0341 μs | 2.17 KB - | JsonCraft.JsonElement | 1.570 μs | 0.2170 μs | 0.0119 μs | 2.44 KB - | JsonCons.JsonElement | 1.783 μs | 0.9320 μs | 0.0511 μs | 3.21 KB - | Hyperbee.JsonNode | 1.870 μs | 0.6578 μs | 0.0361 μs | 2.83 KB - | JsonEverything.JsonNode | 2.832 μs | 0.6614 μs | 0.0363 μs | 5.68 KB - | Newtonsoft.JObject | 4.697 μs | 0.9290 μs | 0.0509 μs | 14.48 KB - | | | | | + | Hyperbee.JsonElement | 1.349 μs | 0.5027 μs | 0.0276 μs | 2.17 KB + | JsonCraft.JsonElement | 1.493 μs | 0.5471 μs | 0.0300 μs | 2.44 KB + | Hyperbee.JsonNode | 1.657 μs | 0.3633 μs | 0.0199 μs | 2.86 KB + | JsonCons.JsonElement | 1.733 μs | 0.3863 μs | 0.0212 μs | 3.21 KB + | JsonEverything.JsonNode | 2.670 μs | 0.6862 μs | 0.0376 μs | 5.68 KB + | Newtonsoft.JObject | 4.155 μs | 1.3012 μs | 0.0713 μs | 14.48 KB + | | | | | | `$` - | Hyperbee.JsonElement | 1.316 μs | 0.7199 μs | 0.0395 μs | 2.17 KB - | JsonCraft.JsonElement | 1.368 μs | 0.0907 μs | 0.0050 μs | 2.22 KB - | JsonEverything.JsonNode | 1.438 μs | 0.1670 μs | 0.0092 μs | 1.88 KB - | Hyperbee.JsonNode | 1.440 μs | 0.2725 μs | 0.0149 μs | 1.75 KB - | JsonCons.JsonElement | 1.456 μs | 0.1789 μs | 0.0098 μs | 2.94 KB - | Newtonsoft.JObject | 4.331 μs | 1.0036 μs | 0.0550 μs | 13.98 KB + | JsonCraft.JsonElement | 1.299 μs | 0.3820 μs | 0.0209 μs | 2.22 KB + | Hyperbee.JsonElement | 1.312 μs | 0.2933 μs | 0.0161 μs | 2.17 KB + | Hyperbee.JsonNode | 1.322 μs | 0.3885 μs | 0.0213 μs | 1.75 KB + | JsonEverything.JsonNode | 1.361 μs | 0.2123 μs | 0.0116 μs | 1.88 KB + | JsonCons.JsonElement | 1.477 μs | 0.6836 μs | 0.0375 μs | 2.94 KB + | Newtonsoft.JObject | 3.864 μs | 0.4926 μs | 0.0270 μs | 13.98 KB Benchmarks with issues: JsonPathParseAndSelectEvaluator.JsonCraft.JsonElement: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3) [Filter=$..book[?@.isbn]] diff --git a/test/Hyperbee.Json.Cts/Hyperbee.Json.Cts.csproj b/test/Hyperbee.Json.Cts/Hyperbee.Json.Cts.csproj index 5a4ab99..c8d8175 100644 --- a/test/Hyperbee.Json.Cts/Hyperbee.Json.Cts.csproj +++ b/test/Hyperbee.Json.Cts/Hyperbee.Json.Cts.csproj @@ -1,22 +1,19 @@  - net8.0;net10.0 - enable enable - false true - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + @@ -28,12 +25,9 @@ - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + diff --git a/test/Hyperbee.Json.Tests/Hyperbee.Json.Tests.csproj b/test/Hyperbee.Json.Tests/Hyperbee.Json.Tests.csproj index 3f2ae69..f3ad172 100644 --- a/test/Hyperbee.Json.Tests/Hyperbee.Json.Tests.csproj +++ b/test/Hyperbee.Json.Tests/Hyperbee.Json.Tests.csproj @@ -1,6 +1,5 @@  - net8.0;net10.0 false Hyperbee.Json.Tests @@ -8,21 +7,18 @@ - - - - - + + + + + - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + \ No newline at end of file diff --git a/version.json b/version.json index ede6b9f..5d95921 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "3.0.7", + "version": "3.1-alpha", "publicReleaseRefSpec": [ "^refs/heads/main$", "^refs/heads/hotfix$",