How oneyaml-csharp compares with the other .NET YAML libraries on speed and memory. Every task runs on the same inputs for every library, through the oneyaml benchmark kit, oneyaml-kit. The tables and charts below are generated from the kit's result file; none of the numbers is typed by hand.
The figures are measured, not bounds: they hold for the workloads, versions and host named in the method line of each block. A run that is marked as not publishable is a smoke result; it shows the layout and the rough picture, and it is not a claim.
What is compared:
- Loading and writing, typed and untyped, against YamlDotNet, SharpYaml and VYaml. oneyaml-csharp is measured on both its reflection path and its generated-metadata path.
- Reading a document for editing, and editing it, against the closest .NET equivalents, such as SharpYaml's syntax tree.
- Applying a patch against Yaml2JsonNode with JsonPatch.Net, the usual .NET route for a JSON Patch on YAML. That route converts to a JSON tree and does not keep the file's formatting, so the comparison is of the work, not of equal output.
Each generated table names the competitors of every task, and a cell without a number says why.
The kit's benchmark notes define each task and how it is timed. The kit also decides when a difference in time or memory is too small to call a win or a loss; the verdict rules say where those bands lie and how a verdict is reached.
Results at a glance
One row per task: our time and the strongest competitor's, each the geometric mean over the task's workloads, with the verdict and the method of the run. The chart in the README is drawn from these rows.
| Task | oneyaml-csharp time (geometric mean) | Strongest competitor | Its time (geometric mean) | Speed against it (its time ÷ ours; higher is better) | Verdict |
|---|---|---|---|---|---|
| typed load | 47.5 µs | vyaml 1.4.1 | 60.7 µs | 1.28× faster | ▲ win |
| generic load | 22.2 µs | vyaml 1.4.1 | 29.5 µs | 1.33× faster | ▲ win |
| dump | 4.77 µs | sharpyaml 3.16.0 (4 of 6), vyaml 1.4.1 (2 of 6) | 12.6 µs | 2.63× faster | ▲ win |
| document parse | 17.8 µs | sharpyaml-syntax 3.16.0 † (sharpyaml-syntax: bytes-only) | 193 µs | 10.8× faster | ▲ win |
| unchanged emit (write-back of an unedited document; not a rendering speed) | 504 ns | sharpyaml-syntax 3.16.0 | 1.25 µs | 2.48× faster | ◆ mixed (loses 2 of 20 generated workloads) |
| edit script | 7.48 µs | sharpyaml-syntax 3.16.0 † (sharpyaml-syntax: harness-rendered) | 554 µs | 74.0× faster | ▲ win |
| patch (RFC 6902) | — | — | — | — | no rival |
Not in a row's mean: patch (RFC 6902): no competitor answer: compose-wordpress, gha-workflow.
Each row is the geometric mean, over the real-world workloads the task has, of our time and of the time of the strongest competitor in each workload. Speed is the competitor's time divided by ours: 2× faster means half the time, and a loss is stated as slower. Where several competitors were strongest the column names them all, with how often. A † marks a cell measured differently from the task as specified; the note beside each mark says how. A marked competitor still counts. A workload where our library has no number is listed and the row is marked as partial, never counted as a win. The verdict is never better than the per-workload verdicts allow: a row with a losing workload is marked mixed or loss, and a row with no winning workload is never marked a win. The speed is over the real-world workloads. The verdict is never better than the real-world workloads allow, nor better than all of the task's workloads allow, generated and reference ones included: a loss on any of them keeps a row from being a clean win and the row says how many it lost, and a win on them cannot lift a row the real-world workloads do not win. Memory and the count of better, level and worse workloads in each row are on the full page.
Method: full run of 2026-10-18T00:48:41Z. Kit 0.1.0 (revision 6cc83d12fbc6); text generated by kit revision c1647a46aa6d. oneyaml-csharp c23a19250217; competitors yamldotnet 18.1.0, sharpyaml 3.16.0, sharpyaml-model 3.16.0, sharpyaml-syntax 3.16.0, vyaml 1.4.1, yaml2jsonnode 3.0.1, oneyaml-csharp-gen c23a19250217. Runtime .NET 10.0.11 (target linux-x64), measured with BenchmarkDotNet 0.15.8: mean time per task from BenchmarkDotNet's ShortRun job (3 warm-up and 3 measured iterations) run in process; one invocation per iteration runs a batch of prepared tasks and the time is divided by the batch size; every cell is measured in a process of its own, because the heap that earlier cells leave behind changed the result. Each process runs with DOTNET_TC_CallCountingDelayMs=0 (call counting starts immediately instead of after the default delay), and no other DOTNET_ or COMPlus_ variable set, and every cell is first warmed up for 1000 ms of whole batches before BenchmarkDotNet's own warm-up, because a new process starts at the runtime's unoptimised tier. Memory: bytes allocated per task from BenchmarkDotNet's MemoryDiagnoser; allocation calls are not available. AMD Ryzen 9 7950X3D 16-Core Processor (125.0 GiB), Linux 7.0.0-34-generic (x86_64), measured on a shared workstation (32 logical CPUs; load 3.72 before, 4.52 after, at most 8.48 during).
Results
Every task and workload, time and memory, from the same run.
Time per operation
| Task | Workload | Input | oneyaml-csharp | yamldotnet | sharpyaml | sharpyaml-model | sharpyaml-syntax | vyaml | yaml2jsonnode | oneyaml-csharp-gen | Ours vs strongest competitor |
|---|---|---|---|---|---|---|---|---|---|---|---|
| typed load | gha-workflow | 9.43 KiB | 47.5 µs | 355 µs | 139 µs | unsupported | unsupported | 60.7 µs | 247 µs | 47.3 µs | 0.78× of vyaml ▲ win |
| typed load | records-4k | 4.14 KiB | 33.9 µs | 281 µs | 102 µs | unsupported | unsupported | 42.9 µs | 193 µs | 33.7 µs | 0.79× of vyaml ▲ win |
| typed load | records-64k | 64.2 KiB | 561 µs | 4.59 ms | 1.66 ms | unsupported | unsupported | 712 µs | 3.13 ms | 563 µs | 0.79× of vyaml ▲ win |
| typed load | records-1m | 1 MiB | 8.56 ms | 72.7 ms | 27.4 ms | unsupported | unsupported | 10.4 ms | 93.7 ms | 8.49 ms | 0.83× of vyaml ▲ win |
| typed load | records-8m | 8 MiB | 70.2 ms | 668 ms | 261 ms | unsupported | unsupported | 85.1 ms | 983 ms | 67.2 ms | 0.83× of vyaml ▲ win |
| generic load | compose-wordpress | 815 B | 3.98 µs | 29.8 µs | 13.9 µs | 11.1 µs | unsupported | 5.1 µs | 17.2 µs | 4.12 µs | 0.78× of vyaml ▲ win |
| generic load | gha-workflow | 9.43 KiB | 50.9 µs | 337 µs | 146 µs | 140 µs | unsupported | 70.9 µs | 239 µs | 49.6 µs | 0.72× of vyaml ▲ win |
| generic load | helm-ingress-nginx | 52.4 KiB | 73.3 µs | 692 µs | 334 µs | 325 µs | unsupported | 103 µs | 545 µs | 73.5 µs | 0.71× of vyaml ▲ win |
| generic load | k8s-ingress-nginx-multi | 16 KiB | 103 µs | 776 µs | unsupported | 292 µs | unsupported | 131 µs | 459 µs | 101 µs | 0.79× of vyaml ▲ win |
| generic load | openapi-api-with-examples | 6.75 KiB | 20.8 µs | 141 µs | 60.8 µs | 61.1 µs | unsupported | 25.9 µs | 95.6 µs | 20.4 µs | 0.80× of vyaml ▲ win |
| generic load | openapi-petstore | 5.34 KiB | 25.1 µs | 191 µs | 80.5 µs | 74.2 µs | unsupported | 38.6 µs | 115 µs | 28.8 µs | 0.65× of vyaml ▲ win |
| generic load | prometheus-config | 1.1 KiB | 3.37 µs | 25.2 µs | 10.1 µs | 10.1 µs | unsupported | 3.97 µs | 15.6 µs | 3.36 µs | 0.85× of vyaml ▲ win |
| generic load | reference-a | 51 B | 617 ns | 4.94 µs | 2.04 µs | 1.99 µs | unsupported | 739 ns | 3.94 µs | 1.11 µs | 0.83× of vyaml ▲ win |
| generic load | reference-b | 51 B | 637 ns | 4.67 µs | 2 µs | 1.9 µs | unsupported | 739 ns | 3.24 µs | 609 ns | 0.86× of vyaml ▲ win |
| generic load | records-4k | 4.14 KiB | 43.7 µs | 284 µs | 111 µs | 103 µs | unsupported | 55.2 µs | 166 µs | 44.3 µs | 0.79× of vyaml ▲ win |
| generic load | records-64k | 64.2 KiB | 640 µs | 4.41 ms | 1.81 ms | 1.79 ms | unsupported | 897 µs | 2.93 ms | 640 µs | 0.71× of vyaml ▲ win |
| generic load | records-1m | 1 MiB | 10.7 ms | 84.8 ms | 29.5 ms | 32.8 ms | unsupported | 13.7 ms | 76.8 ms | 10 ms | 0.78× of vyaml ▲ win |
| generic load | records-8m | 8 MiB | 99.6 ms | 773 ms | 434 ms | 589 ms | unsupported | 134 ms | 910 ms | 110 ms | 0.75× of vyaml ▲ win |
| generic load | compose-merge-2k | 2.14 KiB | 18.7 µs | 138 µs | 57.3 µs (merged) | 62.6 µs | unsupported | 27.5 µs | 87.4 µs | 19.1 µs | 0.68× of vyaml ▲ win |
| generic load | compose-merge-64k | 64.1 KiB | 556 µs | 3.79 ms | 1.73 ms (merged) | 1.81 ms | unsupported | 769 µs | 2.67 ms | 508 µs | 0.72× of vyaml ▲ win |
| generic load | compose-merge-1m | 1 MiB | 8.14 ms | 78.3 ms | 41.3 ms (merged) | 56.2 ms | unsupported | 12.3 ms | 95.6 ms | 8.28 ms | 0.66× of vyaml ▲ win |
| generic load | k8s-multi-16k | 16.4 KiB | 177 µs | 1.16 ms | unsupported | 455 µs | unsupported | 212 µs | 719 µs | 169 µs | 0.83× of vyaml ▲ win |
| generic load | k8s-multi-1m | 1 MiB | 10.2 ms | 110 ms | unsupported | 33.2 ms | unsupported | 14.5 ms | 89.9 ms | 11.1 ms | 0.70× of vyaml ▲ win |
| generic load | openapi-100k | 101 KiB | 803 µs | 5.38 ms | 2.21 ms | 2.23 ms | unsupported | 1.01 ms | 3.64 ms | 881 µs | 0.79× of vyaml ▲ win |
| generic load | openapi-8m | 8 MiB | 60.5 ms | 603 ms | 312 ms | 453 ms | unsupported | 105 ms | 701 ms | 60.1 ms | 0.58× of vyaml ▲ win |
| generic load | helm-values-64k | 64 KiB | 347 µs | 2.54 ms | 1.11 ms | 1.06 ms | unsupported | 470 µs | 1.72 ms | 338 µs | 0.74× of vyaml ▲ win |
| generic load | helm-values-1m | 1 MiB | 5.46 ms | 56.3 ms | 25.8 ms | 22 ms | unsupported | 7.23 ms | 55 ms | 6.21 ms | 0.76× of vyaml ▲ win |
| generic load | deep-block | 5.23 KiB | 16.3 µs | 116 µs | rejects [1] | rejects [6] | unsupported | 18.3 µs | 65.8 µs | 16.2 µs | 0.89× of vyaml ▲ win |
| generic load | deep-flow | 202 B | 8.93 µs | 67.3 µs | rejects [1] | rejects [6] | unsupported | 22 µs | 38.3 µs | 9.62 µs | 0.41× of vyaml ▲ win |
| generic load | wide-map-64k | 64 KiB | 644 µs | 4.56 ms | 2.01 ms | 2.05 ms | unsupported | 811 µs | 2.9 ms | 610 µs | 0.79× of vyaml ▲ win |
| generic load | wide-map-1m | 1 MiB | 10.9 ms | 79.2 ms | 39.7 ms | 40.4 ms | unsupported | 14.1 ms | 87.9 ms | 11.1 ms | 0.77× of vyaml ▲ win |
| generic load | long-scalars-256k | 261 KiB | 322 µs | 2.41 ms | 2.1 ms | 2.24 ms | unsupported | 1.35 ms | 2.34 ms | 308 µs | 0.24× of vyaml ▲ win |
| generic load | flow-heavy-64k | 64 KiB | 1.12 ms | 7.51 ms | 2.95 ms | 2.67 ms | unsupported | 1.31 ms | 4.73 ms | 1.09 ms | 0.85× of vyaml ▲ win |
| generic load | anchors-32k | 32 KiB | 381 µs | 2.14 ms | 907 µs | 1.84 ms | unsupported | 572 µs | 2.08 ms | 384 µs | 0.67× of vyaml ▲ win |
| generic load | unicode-32k | 32 KiB | 156 µs | 811 µs | 391 µs | 372 µs | unsupported | 246 µs | 554 µs | 177 µs | 0.63× of vyaml ▲ win |
| generic load | scalar-styles-32k | 32 KiB | 218 µs | 1.28 ms | 588 µs | 599 µs | unsupported | 320 µs | 824 µs | 234 µs | 0.68× of vyaml ▲ win |
| dump | compose-wordpress | 815 B | 1.33 µs | 23.6 µs | 4.8 µs | 15.5 µs | unsupported | 5.29 µs | 53.9 µs | 1.31 µs | 0.28× of sharpyaml ▲ win |
| dump | gha-workflow | 9.43 KiB | 12.5 µs | 255 µs | 32.7 µs | differs [5] | unsupported | 27 µs | 217 µs | 12.7 µs | 0.46× of vyaml ▲ win |
| dump | helm-ingress-nginx | 52.4 KiB | 17.7 µs | 351 µs | 31.8 µs | 251 µs | unsupported | differs [11] | 253 µs | 18.4 µs | 0.56× of sharpyaml ▲ win |
| dump | openapi-api-with-examples | 6.75 KiB | 5.9 µs | 111 µs | 13.3 µs | 74.7 µs | unsupported | 14.6 µs | 117 µs | 6.62 µs | 0.44× of sharpyaml ▲ win |
| dump | openapi-petstore | 5.34 KiB | 8.41 µs | 155 µs | 21.8 µs | 139 µs | unsupported | 20.2 µs | 147 µs | 8.8 µs | 0.42× of vyaml ▲ win |
| dump | prometheus-config | 1.1 KiB | 816 ns | 19.3 µs | 3.55 µs | 9.68 µs | unsupported | 4.18 µs | 48.5 µs | 837 ns | 0.23× of sharpyaml ▲ win |
| dump | reference-a | 51 B | 239 ns | 4.52 µs | 1.46 µs | 1.14 µs | unsupported | differs [9] | 42.5 µs | 242 ns | 0.21× of sharpyaml-model ▲ win |
| dump | reference-b | 51 B | 241 ns | 4.62 µs | 1.74 µs | 1.38 µs | unsupported | differs [9] | 41.1 µs | 238 ns | 0.18× of sharpyaml-model ▲ win |
| dump | records-4k | 4.14 KiB | 13.4 µs | differs [14] | differs [2] | 121 µs | unsupported | differs [10] | 154 µs | 13.6 µs | 0.11× of sharpyaml-model ▲ win |
| dump | records-64k | 64.2 KiB | 174 µs | differs [14] | differs [2] | 1.99 ms | unsupported | differs [10] | 1.89 ms | 168 µs | 0.09× of yaml2jsonnode ▲ win |
| dump | records-1m | 1 MiB | 3.11 ms | differs [14] | differs [2] | 33.4 ms | unsupported | differs [10] | 41.1 ms | 3.28 ms | 0.09× of sharpyaml-model ▲ win |
| dump | records-8m | 8 MiB | 30.4 ms | differs [14] | differs [2] | 285 ms | unsupported | differs [10] | 582 ms | 26.5 ms | 0.11× of sharpyaml-model ▲ win |
| dump | compose-merge-2k | 2.14 KiB | 9.01 µs | 109 µs | 18.6 µs (merged) | 105 µs | unsupported | 23.2 µs | 140 µs | 9.34 µs | 0.48× of sharpyaml ▲ win |
| dump | compose-merge-64k | 64.1 KiB | 265 µs | 2.95 ms | 628 µs (merged) | 2.49 ms | unsupported | 533 µs | 3.07 ms | 270 µs | 0.50× of vyaml ▲ win |
| dump | compose-merge-1m | 1 MiB | 4.3 ms | 51 ms | 11.4 ms (merged) | 52 ms | unsupported | 8.98 ms | 88.8 ms | 4.39 ms | 0.48× of vyaml ▲ win |
| dump | openapi-100k | 101 KiB | 231 µs | 4.29 ms | 525 µs | 1.82 ms | unsupported | 439 µs | 2.45 ms | 234 µs | 0.53× of vyaml ▲ win |
| dump | openapi-8m | 8 MiB | 21.9 ms | 384 ms | 55.2 ms | 228 ms | unsupported | 39.3 ms | 480 ms | 21.6 ms | 0.56× of vyaml ▲ win |
| dump | helm-values-64k | 64 KiB | 72.6 µs | 1.57 ms | 156 µs | 1.18 ms | unsupported | 180 µs | 1.19 ms | 69.9 µs | 0.47× of sharpyaml ▲ win |
| dump | helm-values-1m | 1 MiB | 1.22 ms | 27.8 ms | 2.78 ms | 20.2 ms | unsupported | 2.88 ms | 24.2 ms | 1.33 ms | 0.44× of sharpyaml ▲ win |
| dump | deep-block | 5.23 KiB | 4.52 µs | rejects [13] | rejects [1] | rejects [6] | unsupported | 11.2 µs | 95.4 µs | 4.48 µs | 0.40× of vyaml ▲ win |
| dump | deep-flow | 202 B | 2.18 µs | rejects [13] | rejects [1] | rejects [6] | unsupported | 7.17 µs | 56.7 µs | 2.23 µs | 0.30× of vyaml ▲ win |
| dump | wide-map-64k | 64 KiB | 159 µs | 2.29 ms | 290 µs | 2.11 ms | unsupported | 290 µs | 2.44 ms | 159 µs | 0.55× of vyaml ▲ win |
| dump | wide-map-1m | 1 MiB | 1.97 ms | 33.8 ms | 4.72 ms | 32.2 ms | unsupported | 3.95 ms | 33.7 ms | 1.97 ms | 0.50× of vyaml ▲ win |
| dump | long-scalars-256k | 261 KiB | 110 µs | 4.03 ms | 719 µs | differs [4] | unsupported | differs [8] | 3.66 ms | 122 µs | 0.15× of sharpyaml ▲ win |
| dump | flow-heavy-64k | 64 KiB | 245 µs | 5.89 ms | 617 µs | 1.94 ms | unsupported | 571 µs | 2.73 ms | 243 µs | 0.43× of vyaml ▲ win |
| dump | anchors-32k | 32 KiB | 418 µs | 1.18 ms | 849 µs | 3.22 ms | unsupported | 872 µs | 4.43 ms | 428 µs | 0.49× of sharpyaml ▲ win |
| dump | unicode-32k | 32 KiB | 47 µs | 584 µs | 112 µs | differs [3] | unsupported | 50.6 µs | 416 µs | 48.7 µs | 0.93× of vyaml ▲ win |
| dump | scalar-styles-32k | 32 KiB | 71.1 µs | 923 µs | 123 µs | 723 µs | unsupported | differs [9] | 603 µs | 70.4 µs | 0.58× of sharpyaml ▲ win |
| document parse | compose-wordpress | 815 B | 4.6 µs | unsupported | unsupported | unsupported | 29.9 µs (bytes-only) † | unsupported | unsupported | 2.73 µs | 0.15× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | gha-workflow | 9.43 KiB | 36 µs | unsupported | unsupported | unsupported | 431 µs (bytes-only) † | unsupported | unsupported | 40.3 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-ingress-nginx | 52.4 KiB | 64.5 µs | unsupported | unsupported | unsupported | 1.14 ms (bytes-only) † | unsupported | unsupported | 61.8 µs | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-ingress-nginx-multi | 16 KiB | 72.8 µs | unsupported | unsupported | unsupported | 858 µs (bytes-only) † | unsupported | unsupported | 78.2 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-api-with-examples | 6.75 KiB | 16.8 µs | unsupported | unsupported | unsupported | 151 µs (bytes-only) † | unsupported | unsupported | 14.9 µs | 0.11× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-petstore | 5.34 KiB | 18 µs | unsupported | unsupported | unsupported | 193 µs (bytes-only) † | unsupported | unsupported | 17.7 µs | 0.09× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | prometheus-config | 1.1 KiB | 2.4 µs | unsupported | unsupported | unsupported | 26.9 µs (bytes-only) † | unsupported | unsupported | 2.35 µs | 0.09× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | reference-a | 51 B | 619 ns | unsupported | unsupported | unsupported | 4.5 µs (bytes-only) † | unsupported | unsupported | 610 ns | 0.14× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | reference-b | 51 B | 594 ns | unsupported | unsupported | unsupported | 4.3 µs (bytes-only) † | unsupported | unsupported | 609 ns | 0.14× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-4k | 4.14 KiB | 30.8 µs | unsupported | unsupported | unsupported | 271 µs (bytes-only) † | unsupported | unsupported | 30.8 µs | 0.11× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-64k | 64.2 KiB | 472 µs | unsupported | unsupported | unsupported | 6.38 ms (bytes-only) † | unsupported | unsupported | 514 µs | 0.07× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-1m | 1 MiB | 7.52 ms | unsupported | unsupported | unsupported | 121 ms (bytes-only) † | unsupported | unsupported | 7.38 ms | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-8m | 8 MiB | 60.1 ms | unsupported | unsupported | unsupported | 1.13 s (bytes-only) † | unsupported | unsupported | 59.1 ms | 0.05× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-2k | 2.14 KiB | 14 µs | unsupported | unsupported | unsupported | 128 µs (bytes-only) † | unsupported | unsupported | 17.3 µs | 0.11× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-64k | 64.1 KiB | 449 µs | unsupported | unsupported | unsupported | 5.29 ms (bytes-only) † | unsupported | unsupported | 406 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-1m | 1 MiB | 6.32 ms | unsupported | unsupported | unsupported | 109 ms (bytes-only) † | unsupported | unsupported | 6.08 ms | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-multi-16k | 16.4 KiB | 124 µs | unsupported | unsupported | unsupported | 1.33 ms (bytes-only) † | unsupported | unsupported | 125 µs | 0.09× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-multi-1m | 1 MiB | 8.08 ms | unsupported | unsupported | unsupported | 119 ms (bytes-only) † | unsupported | unsupported | 7.49 ms | 0.07× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-100k | 101 KiB | 544 µs | unsupported | unsupported | unsupported | 6.89 ms (bytes-only) † | unsupported | unsupported | 554 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-8m | 8 MiB | 48.5 ms | unsupported | unsupported | unsupported | 840 ms (bytes-only) † | unsupported | unsupported | 43.1 ms | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-values-64k | 64 KiB | 275 µs | unsupported | unsupported | unsupported | 3.48 ms (bytes-only) † | unsupported | unsupported | 277 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-values-1m | 1 MiB | 4.3 ms | unsupported | unsupported | unsupported | 79.9 ms (bytes-only) † | unsupported | unsupported | 4.54 ms | 0.05× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | deep-block | 5.23 KiB | 11.5 µs | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 11.3 µs | no rival |
| document parse | deep-flow | 202 B | 6.17 µs | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 6.6 µs | no rival |
| document parse | wide-map-64k | 64 KiB | 452 µs | unsupported | unsupported | unsupported | 4.83 ms (bytes-only) † | unsupported | unsupported | 455 µs | 0.09× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | wide-map-1m | 1 MiB | 5.86 ms | unsupported | unsupported | unsupported | 101 ms (bytes-only) † | unsupported | unsupported | 5.9 ms | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | long-scalars-256k | 261 KiB | 41.8 µs | unsupported | unsupported | unsupported | 8.75 ms (bytes-only) † | unsupported | unsupported | 39.3 µs | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | flow-heavy-64k | 64 KiB | 874 µs | unsupported | unsupported | unsupported | 10.3 ms (bytes-only) † | unsupported | unsupported | 874 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | anchors-32k | 32 KiB | 320 µs | unsupported | unsupported | unsupported | 4.1 ms (bytes-only) † | unsupported | unsupported | 322 µs | 0.08× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | unicode-32k | 32 KiB | 96.3 µs | unsupported | unsupported | unsupported | 1.65 ms (bytes-only) † | unsupported | unsupported | 101 µs | 0.06× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | scalar-styles-32k | 32 KiB | 159 µs | unsupported | unsupported | unsupported | 2.15 ms (bytes-only) † | unsupported | unsupported | 209 µs | 0.07× of sharpyaml-syntax † (bytes-only) ▲ win |
| unchanged emit | compose-wordpress | 815 B | 55.7 ns | unsupported | unsupported | unsupported | 222 ns | unsupported | unsupported | 64.7 ns | 0.25× of sharpyaml-syntax ▲ win |
| unchanged emit | gha-workflow | 9.43 KiB | 1.15 µs | unsupported | unsupported | unsupported | 2.1 µs | unsupported | unsupported | 868 ns | 0.55× of sharpyaml-syntax ▲ win |
| unchanged emit | helm-ingress-nginx | 52.4 KiB | 2.59 µs | unsupported | unsupported | unsupported | 7.12 µs | unsupported | unsupported | 1.58 µs | 0.36× of sharpyaml-syntax ▲ win |
| unchanged emit | k8s-ingress-nginx-multi | 16 KiB | 1.33 µs | unsupported | unsupported | unsupported | 2.45 µs | unsupported | unsupported | 1.24 µs | 0.54× of sharpyaml-syntax ▲ win |
| unchanged emit | openapi-api-with-examples | 6.75 KiB | 997 ns | unsupported | unsupported | unsupported | 1.55 µs | unsupported | unsupported | 1.06 µs | 0.64× of sharpyaml-syntax ▲ win |
| unchanged emit | openapi-petstore | 5.34 KiB | 626 ns | unsupported | unsupported | unsupported | 1.38 µs | unsupported | unsupported | 622 ns | 0.45× of sharpyaml-syntax ▲ win |
| unchanged emit | prometheus-config | 1.1 KiB | 59.8 ns | unsupported | unsupported | unsupported | 275 ns | unsupported | unsupported | 85.2 ns | 0.22× of sharpyaml-syntax ▲ win |
| unchanged emit | reference-a | 51 B | 11.6 ns | unsupported | unsupported | unsupported | 17.5 ns | unsupported | unsupported | 11.5 ns | 0.66× of sharpyaml-syntax ▲ win |
| unchanged emit | reference-b | 51 B | 11.2 ns | unsupported | unsupported | unsupported | 15 ns | unsupported | unsupported | 16.6 ns | 0.75× of sharpyaml-syntax ▲ win |
| unchanged emit | records-4k | 4.14 KiB | 540 ns | unsupported | unsupported | unsupported | 2.53 µs | unsupported | unsupported | 567 ns | 0.21× of sharpyaml-syntax ▲ win |
| unchanged emit | records-64k | 64.2 KiB | 4.12 µs | unsupported | unsupported | unsupported | 9.38 µs | unsupported | unsupported | 3.73 µs | 0.44× of sharpyaml-syntax ▲ win |
| unchanged emit | records-1m | 1 MiB | 49 µs | unsupported | unsupported | unsupported | 206 µs | unsupported | unsupported | 51 µs | 0.24× of sharpyaml-syntax ▲ win |
| unchanged emit | records-8m | 8 MiB | 745 µs | unsupported | unsupported | unsupported | 4.2 ms | unsupported | unsupported | 660 µs | 0.18× of sharpyaml-syntax ▲ win |
| unchanged emit | compose-merge-2k | 2.14 KiB | 419 ns | unsupported | unsupported | unsupported | 869 ns | unsupported | unsupported | 286 ns | 0.48× of sharpyaml-syntax ▲ win |
| unchanged emit | compose-merge-64k | 64.1 KiB | 4.75 µs | unsupported | unsupported | unsupported | 8.46 µs | unsupported | unsupported | 5.46 µs | 0.56× of sharpyaml-syntax ▲ win |
| unchanged emit | compose-merge-1m | 1 MiB | 82.2 µs | unsupported | unsupported | unsupported | 191 µs | unsupported | unsupported | 82.7 µs | 0.43× of sharpyaml-syntax ▲ win |
| unchanged emit | k8s-multi-16k | 16.4 KiB | 1.27 µs | unsupported | unsupported | unsupported | 2.44 µs | unsupported | unsupported | 1.21 µs | 0.52× of sharpyaml-syntax ▲ win |
| unchanged emit | k8s-multi-1m | 1 MiB | 51.8 µs | unsupported | unsupported | unsupported | 220 µs | unsupported | unsupported | 70 µs | 0.24× of sharpyaml-syntax ▲ win |
| unchanged emit | openapi-100k | 101 KiB | 26.3 µs | unsupported | unsupported | unsupported | 13.3 µs | unsupported | unsupported | 23 µs | 1.97× of sharpyaml-syntax ▼ loss |
| unchanged emit | openapi-8m | 8 MiB | 3.14 ms | unsupported | unsupported | unsupported | 4.09 ms | unsupported | unsupported | 3.17 ms | 0.77× of sharpyaml-syntax ▲ win |
| unchanged emit | helm-values-64k | 64 KiB | 2.74 µs | unsupported | unsupported | unsupported | 8.94 µs | unsupported | unsupported | 3.81 µs | 0.31× of sharpyaml-syntax ▲ win |
| unchanged emit | helm-values-1m | 1 MiB | 40.4 µs | unsupported | unsupported | unsupported | 181 µs | unsupported | unsupported | 39.6 µs | 0.22× of sharpyaml-syntax ▲ win |
| unchanged emit | deep-block | 5.23 KiB | 1.35 µs | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 454 ns | no rival |
| unchanged emit | deep-flow | 202 B | 31.2 ns | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 28.9 ns | no rival |
| unchanged emit | wide-map-64k | 64 KiB | 3.63 µs | unsupported | unsupported | unsupported | 8.96 µs | unsupported | unsupported | 4.41 µs | 0.40× of sharpyaml-syntax ▲ win |
| unchanged emit | wide-map-1m | 1 MiB | 45.4 µs | unsupported | unsupported | unsupported | 201 µs | unsupported | unsupported | 40.2 µs | 0.23× of sharpyaml-syntax ▲ win |
| unchanged emit | long-scalars-256k | 261 KiB | 36.8 µs | unsupported | unsupported | unsupported | 32 µs | unsupported | unsupported | 36.1 µs | 1.15× of sharpyaml-syntax ▼ loss |
| unchanged emit | flow-heavy-64k | 64 KiB | 5.31 µs | unsupported | unsupported | unsupported | 10.3 µs | unsupported | unsupported | 5.2 µs | 0.52× of sharpyaml-syntax ▲ win |
| unchanged emit | anchors-32k | 32 KiB | 5.4 µs | unsupported | unsupported | unsupported | 5.37 µs | unsupported | unsupported | 5.27 µs | 1.01× of sharpyaml-syntax ● tie |
| unchanged emit | unicode-32k | 32 KiB | 4.2 µs | unsupported | unsupported | unsupported | 12.1 µs | unsupported | unsupported | 4.62 µs | 0.35× of sharpyaml-syntax ▲ win |
| unchanged emit | scalar-styles-32k | 32 KiB | 1.17 µs | unsupported | unsupported | unsupported | 4.71 µs | unsupported | unsupported | 1.28 µs | 0.25× of sharpyaml-syntax ▲ win |
| edit script | compose-wordpress | 815 B | 5.15 µs | unsupported | unsupported | unsupported | 116 µs (harness-rendered) † | unsupported | unsupported | 5.7 µs | 0.04× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | gha-workflow | 9.43 KiB | 8.42 µs | unsupported | unsupported | unsupported | 2.76 ms (harness-rendered) † | unsupported | unsupported | 8.6 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-ingress-nginx | 52.4 KiB | 27.9 µs | unsupported | unsupported | unsupported | 5.78 ms (harness-rendered) † | unsupported | unsupported | 28.2 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-api-with-examples | 6.75 KiB | 7.16 µs | unsupported | unsupported | unsupported | 350 µs (harness-rendered) † | unsupported | unsupported | 6.55 µs | 0.02× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-petstore | 5.34 KiB | 7.92 µs | unsupported | unsupported | unsupported | 778 µs (harness-rendered) † | unsupported | unsupported | 7.28 µs | 0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | prometheus-config | 1.1 KiB | 2.57 µs | unsupported | unsupported | unsupported | 57.5 µs (harness-rendered) † | unsupported | unsupported | 3.32 µs | 0.04× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | reference-a | 51 B | 1.44 µs | unsupported | unsupported | unsupported | 5.22 µs (harness-rendered) † | unsupported | unsupported | 1.45 µs | 0.28× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | reference-b | 51 B | 1.58 µs | unsupported | unsupported | unsupported | 5.31 µs (harness-rendered) † | unsupported | unsupported | 1.38 µs | 0.30× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-4k | 4.14 KiB | 8.6 µs | unsupported | unsupported | unsupported | 1.22 ms (harness-rendered) † | unsupported | unsupported | 8.96 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-64k | 64.2 KiB | 45.4 µs | unsupported | unsupported | unsupported | 33.1 ms (harness-rendered) † | unsupported | unsupported | 42.2 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-1m | 1 MiB | 740 µs | unsupported | unsupported | unsupported | 624 ms (harness-rendered) † | unsupported | unsupported | 672 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-8m | 8 MiB | 11.6 ms | unsupported | unsupported | unsupported | 4.55 s (harness-rendered) † | unsupported | unsupported | 11.7 ms | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-2k | 2.14 KiB | 8.52 µs | unsupported | unsupported | unsupported | 389 µs (harness-rendered) † | unsupported | unsupported | 8.54 µs | 0.02× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-64k | 64.1 KiB | 77 µs | unsupported | unsupported | unsupported | 22.1 ms (harness-rendered) † | unsupported | unsupported | 79.1 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-1m | 1 MiB | 1.33 ms | unsupported | unsupported | unsupported | 412 ms (harness-rendered) † | unsupported | unsupported | 1.23 ms | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-100k | 101 KiB | 44.5 µs | unsupported | unsupported | unsupported | 31.8 ms (harness-rendered) † | unsupported | unsupported | 50.1 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-8m | 8 MiB | 9.51 ms | unsupported | unsupported | unsupported | 2.86 s (harness-rendered) † | unsupported | unsupported | 9.46 ms | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-values-64k | 64 KiB | 56.8 µs | unsupported | unsupported | unsupported | 16.6 ms (harness-rendered) † | unsupported | unsupported | 54 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-values-1m | 1 MiB | 770 µs | unsupported | unsupported | unsupported | 303 ms (harness-rendered) † | unsupported | unsupported | 756 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | wide-map-64k | 64 KiB | 125 µs | unsupported | unsupported | unsupported | 16 ms (harness-rendered) † | unsupported | unsupported | 116 µs | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | wide-map-1m | 1 MiB | 1.86 ms | unsupported | unsupported | unsupported | 254 ms (harness-rendered) † | unsupported | unsupported | 1.84 ms | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| patch (RFC 6902) | compose-wordpress | 815 B | 4.52 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 4.73 µs | no rival |
| patch (RFC 6902) | gha-workflow | 9.43 KiB | 8.51 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 8.37 µs | no rival |
| patch (RFC 6902) | reference-a | 51 B | 1.51 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 1.58 µs | no rival |
| patch (RFC 6902) | reference-b | 51 B | 1.45 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 1.42 µs | no rival |
| patch (RFC 6902) | records-4k | 4.14 KiB | 7.5 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 7.45 µs | no rival |
| patch (RFC 6902) | records-64k | 64.2 KiB | 59.2 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 52.1 µs | no rival |
| patch (RFC 6902) | records-1m | 1 MiB | 988 µs | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 1.02 ms | no rival |
| patch (RFC 6902) | records-8m | 8 MiB | 14.8 ms | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 14.4 ms | no rival |
Allocated bytes per task (MemoryDiagnoser)
| Task | Workload | Input | oneyaml-csharp | yamldotnet | sharpyaml | sharpyaml-model | sharpyaml-syntax | vyaml | yaml2jsonnode | oneyaml-csharp-gen | Ours vs strongest competitor |
|---|---|---|---|---|---|---|---|---|---|---|---|
| typed load | gha-workflow | 9.43 KiB | 27.5 KiB | 397 KiB | 204 KiB | unsupported | unsupported | 30.6 KiB | 395 KiB | 27.5 KiB | 0.90× of vyaml ▲ win |
| typed load | records-4k | 4.14 KiB | 11.2 KiB | 349 KiB | 156 KiB | unsupported | unsupported | 11.2 KiB | 325 KiB | 11.2 KiB | 1.00× of vyaml ● tie |
| typed load | records-64k | 64.2 KiB | 153 KiB | 5.14 MiB | 2.28 MiB | unsupported | unsupported | 171 KiB | 4.77 MiB | 153 KiB | 0.90× of vyaml ▲ win |
| typed load | records-1m | 1 MiB | 2.34 MiB | 80.7 MiB | 35.8 MiB | unsupported | unsupported | 2.64 MiB | 74.9 MiB | 2.34 MiB | 0.89× of vyaml ▲ win |
| typed load | records-8m | 8 MiB | 18.6 MiB | 660 MiB | 283 MiB | unsupported | unsupported | 21 MiB | 593 MiB | 18.6 MiB | 0.89× of vyaml ▲ win |
| generic load | compose-wordpress | 815 B | 3.34 KiB | 42.4 KiB | 24 KiB | 20.9 KiB | unsupported | 3.6 KiB | 34.3 KiB | 3.34 KiB | 0.93× of vyaml ▲ win |
| generic load | gha-workflow | 9.43 KiB | 39.3 KiB | 434 KiB | 237 KiB | 220 KiB | unsupported | 48.2 KiB | 357 KiB | 39.3 KiB | 0.82× of vyaml ▲ win |
| generic load | helm-ingress-nginx | 52.4 KiB | 52.9 KiB | 690 KiB | 412 KiB | 392 KiB | unsupported | 67.4 KiB | 599 KiB | 52.9 KiB | 0.78× of vyaml ▲ win |
| generic load | k8s-ingress-nginx-multi | 16 KiB | 69.9 KiB | 937 KiB | unsupported | 450 KiB | unsupported | 105 KiB | 758 KiB | 69.9 KiB | 0.67× of vyaml ▲ win |
| generic load | openapi-api-with-examples | 6.75 KiB | 20.8 KiB | 211 KiB | 112 KiB | 105 KiB | unsupported | 21.6 KiB | 170 KiB | 20.8 KiB | 0.96× of vyaml ▲ win |
| generic load | openapi-petstore | 5.34 KiB | 30.1 KiB | 255 KiB | 143 KiB | 132 KiB | unsupported | 31.5 KiB | 216 KiB | 30.1 KiB | 0.95× of vyaml ▲ win |
| generic load | prometheus-config | 1.1 KiB | 3.15 KiB | 37.7 KiB | 20.7 KiB | 19.6 KiB | unsupported | 3.3 KiB | 32.1 KiB | 3.15 KiB | 0.95× of vyaml ▲ win |
| generic load | reference-a | 51 B | 320 B | 12.5 KiB | 5.09 KiB | 4.97 KiB | unsupported | 392 B | 11.1 KiB | 320 B | 0.82× of vyaml ▲ win |
| generic load | reference-b | 51 B | 320 B | 12.3 KiB | 5.09 KiB | 4.97 KiB | unsupported | 392 B | 11.1 KiB | 320 B | 0.82× of vyaml ▲ win |
| generic load | records-4k | 4.14 KiB | 34.8 KiB | 378 KiB | 199 KiB | 182 KiB | unsupported | 42 KiB | 313 KiB | 34.8 KiB | 0.83× of vyaml ▲ win |
| generic load | records-64k | 64.2 KiB | 414 KiB | 5.58 MiB | 2.93 MiB | 2.67 MiB | unsupported | 648 KiB | 4.61 MiB | 414 KiB | 0.64× of vyaml ▲ win |
| generic load | records-1m | 1 MiB | 6.33 MiB | 87.6 MiB | 45.9 MiB | 42 MiB | unsupported | 9.96 MiB | 72.3 MiB | 6.33 MiB | 0.64× of vyaml ▲ win |
| generic load | records-8m | 8 MiB | 50.2 MiB | 693 MiB | 364 MiB | 332 MiB | unsupported | 78.9 MiB | 572 MiB | 50.2 MiB | 0.64× of vyaml ▲ win |
| generic load | compose-merge-2k | 2.14 KiB | 16.7 KiB | 179 KiB | 95.3 KiB | 110 KiB | unsupported | 26.6 KiB | 162 KiB | 16.7 KiB | 0.63× of vyaml ▲ win |
| generic load | compose-merge-64k | 64.1 KiB | 338 KiB | 5.02 MiB | 2.52 MiB | 3.01 MiB | unsupported | 762 KiB | 4.37 MiB | 338 KiB | 0.44× of vyaml ▲ win |
| generic load | compose-merge-1m | 1 MiB | 5.28 MiB | 74.4 MiB | 39.5 MiB | 47 MiB | unsupported | 11.7 MiB | 68.1 MiB | 5.28 MiB | 0.45× of vyaml ▲ win |
| generic load | k8s-multi-16k | 16.4 KiB | 138 KiB | 1.61 MiB | unsupported | 804 KiB | unsupported | 184 KiB | 1.33 MiB | 138 KiB | 0.75× of vyaml ▲ win |
| generic load | k8s-multi-1m | 1 MiB | 8.15 MiB | 98.4 MiB | unsupported | 48 MiB | unsupported | 11 MiB | 81 MiB | 8.15 MiB | 0.74× of vyaml ▲ win |
| generic load | openapi-100k | 101 KiB | 611 KiB | 7.02 MiB | 3.72 MiB | 3.41 MiB | unsupported | 829 KiB | 5.81 MiB | 611 KiB | 0.74× of vyaml ▲ win |
| generic load | openapi-8m | 8 MiB | 48.2 MiB | 564 MiB | 299 MiB | 275 MiB | unsupported | 65.4 MiB | 468 MiB | 48.2 MiB | 0.74× of vyaml ▲ win |
| generic load | helm-values-64k | 64 KiB | 213 KiB | 3.27 MiB | 1.67 MiB | 1.59 MiB | unsupported | 337 KiB | 2.64 MiB | 213 KiB | 0.63× of vyaml ▲ win |
| generic load | helm-values-1m | 1 MiB | 3.34 MiB | 54.5 MiB | 26.6 MiB | 25.2 MiB | unsupported | 5.28 MiB | 41.9 MiB | 3.34 MiB | 0.63× of vyaml ▲ win |
| generic load | deep-block | 5.23 KiB | 21.3 KiB | 200 KiB | rejects [1] | rejects [6] | unsupported | 23.7 KiB | 171 KiB | 21.3 KiB | 0.90× of vyaml ▲ win |
| generic load | deep-flow | 202 B | 8.62 KiB | 130 KiB | rejects [1] | rejects [6] | unsupported | 8.62 KiB | 91.5 KiB | 8.62 KiB | 1.00× of vyaml ● tie |
| generic load | wide-map-64k | 64 KiB | 448 KiB | 4.94 MiB | 2.31 MiB | 2.26 MiB | unsupported | 462 KiB | 3.77 MiB | 448 KiB | 0.97× of vyaml ▲ win |
| generic load | wide-map-1m | 1 MiB | 7.25 MiB | 68.5 MiB | 35.7 MiB | 33.9 MiB | unsupported | 7.45 MiB | 56.8 MiB | 7.25 MiB | 0.97× of vyaml ▲ win |
| generic load | long-scalars-256k | 261 KiB | 516 KiB | 1.58 MiB | 1.88 MiB | 1.88 MiB | unsupported | 515 KiB | 1.58 MiB | 516 KiB | 1.00× of vyaml ● tie |
| generic load | flow-heavy-64k | 64 KiB | 646 KiB | 10.6 MiB | 5 MiB | 4.72 MiB | unsupported | 1.02e+03 KiB | 8.48 MiB | 646 KiB | 0.63× of vyaml ▲ win |
| generic load | anchors-32k | 32 KiB | 312 KiB | 2.89 MiB | 1.78 MiB | 4.06 MiB | unsupported | 1.13 MiB | 4.32 MiB | 312 KiB | 0.27× of vyaml ▲ win |
| generic load | unicode-32k | 32 KiB | 103 KiB | 1.07 MiB | 522 KiB | 567 KiB | unsupported | 102 KiB | 886 KiB | 103 KiB | 1.01× of vyaml ● tie |
| generic load | scalar-styles-32k | 32 KiB | 115 KiB | 1.63 MiB | 1.05 MiB | 1.04 MiB | unsupported | 178 KiB | 1.34 MiB | 115 KiB | 0.65× of vyaml ▲ win |
| dump | compose-wordpress | 815 B | 720 B | 37.9 KiB | 6.7 KiB | 8.54 KiB | unsupported | 65.1 KiB | 117 KiB | 720 B | 0.10× of sharpyaml ▲ win |
| dump | gha-workflow | 9.43 KiB | 8.41 KiB | 256 KiB | 35.1 KiB | differs [5] | unsupported | 78.4 KiB | 350 KiB | 8.41 KiB | 0.24× of sharpyaml ▲ win |
| dump | helm-ingress-nginx | 52.4 KiB | 9.13 KiB | 374 KiB | 29.5 KiB | 80.3 KiB | unsupported | differs [11] | 450 KiB | 9.13 KiB | 0.31× of sharpyaml ▲ win |
| dump | openapi-api-with-examples | 6.75 KiB | 4.2 KiB | 132 KiB | 14.9 KiB | 28.6 KiB | unsupported | 70.9 KiB | 217 KiB | 4.2 KiB | 0.28× of sharpyaml ▲ win |
| dump | openapi-petstore | 5.34 KiB | 5.41 KiB | 161 KiB | 18.1 KiB | 46.1 KiB | unsupported | 73.2 KiB | 251 KiB | 5.41 KiB | 0.30× of sharpyaml ▲ win |
| dump | prometheus-config | 1.1 KiB | 408 B | 34.4 KiB | 2.59 KiB | 5.48 KiB | unsupported | 65.3 KiB | 115 KiB | 408 B | 0.15× of sharpyaml ▲ win |
| dump | reference-a | 51 B | 112 B | 18.5 KiB | 1.55 KiB | 1.93 KiB | unsupported | differs [9] | 101 KiB | 112 B | 0.07× of sharpyaml ▲ win |
| dump | reference-b | 51 B | 112 B | 18.5 KiB | 1.55 KiB | 1.93 KiB | unsupported | differs [9] | 101 KiB | 112 B | 0.07× of sharpyaml ▲ win |
| dump | records-4k | 4.14 KiB | 4.23 KiB | differs [14] | differs [2] | 49.6 KiB | unsupported | differs [10] | 298 KiB | 4.23 KiB | 0.09× of sharpyaml-model ▲ win |
| dump | records-64k | 64.2 KiB | 64.8 KiB | differs [14] | differs [2] | 636 KiB | unsupported | differs [10] | 2.98 MiB | 64.8 KiB | 0.10× of sharpyaml-model ▲ win |
| dump | records-1m | 1 MiB | 1.01 MiB | differs [14] | differs [2] | 9.7 MiB | unsupported | differs [10] | 45.4 MiB | 1.01 MiB | 0.10× of sharpyaml-model ▲ win |
| dump | records-8m | 8 MiB | 8.05 MiB | differs [14] | differs [2] | 77.4 MiB | unsupported | differs [10] | 359 MiB | 8.05 MiB | 0.10× of sharpyaml-model ▲ win |
| dump | compose-merge-2k | 2.14 KiB | 4.11 KiB | 123 KiB | 13 KiB | 39.8 KiB | unsupported | 75.2 KiB | 273 KiB | 4.11 KiB | 0.32× of sharpyaml ▲ win |
| dump | compose-merge-64k | 64.1 KiB | 124 KiB | 2.91 MiB | 350 KiB | 904 KiB | unsupported | 519 KiB | 4.94 MiB | 124 KiB | 0.35× of sharpyaml ▲ win |
| dump | compose-merge-1m | 1 MiB | 1.92 MiB | 45.3 MiB | 8.9 MiB | 13.8 MiB | unsupported | 8.91 MiB | 75.6 MiB | 1.92 MiB | 0.22× of sharpyaml ▲ win |
| dump | openapi-100k | 101 KiB | 104 KiB | 3.88 MiB | 312 KiB | 849 KiB | unsupported | 464 KiB | 4.12 MiB | 104 KiB | 0.33× of sharpyaml ▲ win |
| dump | openapi-8m | 8 MiB | 8.25 MiB | 311 MiB | 41.2 MiB | 62.7 MiB | unsupported | 53.2 MiB | 324 MiB | 8.25 MiB | 0.20× of sharpyaml ▲ win |
| dump | helm-values-64k | 64 KiB | 39.4 KiB | 1.73 MiB | 120 KiB | 365 KiB | unsupported | 187 KiB | 1.83 MiB | 39.4 KiB | 0.33× of sharpyaml ▲ win |
| dump | helm-values-1m | 1 MiB | 631 KiB | 26.3 MiB | 1.85 MiB | 5.43 MiB | unsupported | 3.84 MiB | 27.4 MiB | 631 KiB | 0.33× of sharpyaml ▲ win |
| dump | deep-block | 5.23 KiB | 10.2 KiB | rejects [13] | rejects [1] | rejects [6] | unsupported | 72.9 KiB | 277 KiB | 10.2 KiB | 0.14× of vyaml ▲ win |
| dump | deep-flow | 202 B | 280 B | rejects [13] | rejects [1] | rejects [6] | unsupported | 68.1 KiB | 145 KiB | 280 B | <0.01× of vyaml ▲ win |
| dump | wide-map-64k | 64 KiB | 64.2 KiB | 2.37 MiB | 236 KiB | 464 KiB | unsupported | 309 KiB | 2.34 MiB | 64.2 KiB | 0.27× of sharpyaml ▲ win |
| dump | wide-map-1m | 1 MiB | 1 MiB | 34.5 MiB | 5.64 MiB | 7.03 MiB | unsupported | 5.59 MiB | 34.2 MiB | 1 MiB | 0.18× of vyaml ▲ win |
| dump | long-scalars-256k | 261 KiB | 260 KiB | 1.55 MiB | 776 KiB | differs [4] | unsupported | differs [8] | 1.38 MiB | 260 KiB | 0.33× of sharpyaml ▲ win |
| dump | flow-heavy-64k | 64 KiB | 84.4 KiB | 6.23 MiB | 333 KiB | 848 KiB | unsupported | 472 KiB | 5.03 MiB | 84.4 KiB | 0.25× of sharpyaml ▲ win |
| dump | anchors-32k | 32 KiB | 145 KiB | 1.55 MiB | 447 KiB | 1.42 MiB | unsupported | 863 KiB | 9.8 MiB | 145 KiB | 0.33× of sharpyaml ▲ win |
| dump | unicode-32k | 32 KiB | 25.9 KiB | 606 KiB | 68.3 KiB | differs [3] | unsupported | 64.2 KiB | 578 KiB | 25.9 KiB | 0.40× of vyaml ▲ win |
| dump | scalar-styles-32k | 32 KiB | 29.7 KiB | 923 KiB | 87.5 KiB | 230 KiB | unsupported | differs [9] | 927 KiB | 29.7 KiB | 0.34× of sharpyaml ▲ win |
| document parse | compose-wordpress | 815 B | 264 B | unsupported | unsupported | unsupported | 52 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | gha-workflow | 9.43 KiB | 264 B | unsupported | unsupported | unsupported | 647 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-ingress-nginx | 52.4 KiB | 264 B | unsupported | unsupported | unsupported | 1.26 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-ingress-nginx-multi | 16 KiB | 264 B | unsupported | unsupported | unsupported | 1.24 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-api-with-examples | 6.75 KiB | 264 B | unsupported | unsupported | unsupported | 231 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-petstore | 5.34 KiB | 264 B | unsupported | unsupported | unsupported | 349 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | prometheus-config | 1.1 KiB | 264 B | unsupported | unsupported | unsupported | 48.4 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | reference-a | 51 B | 264 B | unsupported | unsupported | unsupported | 9.82 KiB † | unsupported | unsupported | 264 B | 0.03× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | reference-b | 51 B | 264 B | unsupported | unsupported | unsupported | 9.82 KiB † | unsupported | unsupported | 264 B | 0.03× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-4k | 4.14 KiB | 264 B | unsupported | unsupported | unsupported | 416 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-64k | 64.2 KiB | 264 B | unsupported | unsupported | unsupported | 6.24 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-1m | 1 MiB | 264 B | unsupported | unsupported | unsupported | 98.6 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | records-8m | 8 MiB | 264 B | unsupported | unsupported | unsupported | 784 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-2k | 2.14 KiB | 264 B | unsupported | unsupported | unsupported | 206 KiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-64k | 64.1 KiB | 264 B | unsupported | unsupported | unsupported | 5.85 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | compose-merge-1m | 1 MiB | 264 B | unsupported | unsupported | unsupported | 92.1 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-multi-16k | 16.4 KiB | 264 B | unsupported | unsupported | unsupported | 1.62 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | k8s-multi-1m | 1 MiB | 264 B | unsupported | unsupported | unsupported | 101 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-100k | 101 KiB | 264 B | unsupported | unsupported | unsupported | 9.47 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | openapi-8m | 8 MiB | 264 B | unsupported | unsupported | unsupported | 680 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-values-64k | 64 KiB | 264 B | unsupported | unsupported | unsupported | 4.8 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | helm-values-1m | 1 MiB | 264 B | unsupported | unsupported | unsupported | 76.3 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | deep-block | 5.23 KiB | 264 B | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 264 B | no rival |
| document parse | deep-flow | 202 B | 264 B | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 264 B | no rival |
| document parse | wide-map-64k | 64 KiB | 264 B | unsupported | unsupported | unsupported | 5.97 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | wide-map-1m | 1 MiB | 264 B | unsupported | unsupported | unsupported | 90.5 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | long-scalars-256k | 261 KiB | 264 B | unsupported | unsupported | unsupported | 9.98 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | flow-heavy-64k | 64 KiB | 264 B | unsupported | unsupported | unsupported | 11.5 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | anchors-32k | 32 KiB | 264 B | unsupported | unsupported | unsupported | 5.28 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | unicode-32k | 32 KiB | 264 B | unsupported | unsupported | unsupported | 2.29 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| document parse | scalar-styles-32k | 32 KiB | 264 B | unsupported | unsupported | unsupported | 3.04 MiB † | unsupported | unsupported | 264 B | <0.01× of sharpyaml-syntax † (bytes-only) ▲ win |
| unchanged emit | compose-wordpress | 815 B | 840 B | unsupported | unsupported | unsupported | 840 B | unsupported | unsupported | 840 B | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | gha-workflow | 9.43 KiB | 9.45 KiB | unsupported | unsupported | unsupported | 9.45 KiB | unsupported | unsupported | 9.45 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | helm-ingress-nginx | 52.4 KiB | 52.4 KiB | unsupported | unsupported | unsupported | 52.4 KiB | unsupported | unsupported | 52.4 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | k8s-ingress-nginx-multi | 16 KiB | 16 KiB | unsupported | unsupported | unsupported | 16 KiB | unsupported | unsupported | 16 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | openapi-api-with-examples | 6.75 KiB | 6.77 KiB | unsupported | unsupported | unsupported | 6.77 KiB | unsupported | unsupported | 6.77 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | openapi-petstore | 5.34 KiB | 5.37 KiB | unsupported | unsupported | unsupported | 5.37 KiB | unsupported | unsupported | 5.37 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | prometheus-config | 1.1 KiB | 1.12 KiB | unsupported | unsupported | unsupported | 1.12 KiB | unsupported | unsupported | 1.12 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | reference-a | 51 B | 80 B | unsupported | unsupported | unsupported | 80 B | unsupported | unsupported | 80 B | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | reference-b | 51 B | 80 B | unsupported | unsupported | unsupported | 80 B | unsupported | unsupported | 80 B | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | records-4k | 4.14 KiB | 4.17 KiB | unsupported | unsupported | unsupported | 4.17 KiB | unsupported | unsupported | 4.17 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | records-64k | 64.2 KiB | 64.2 KiB | unsupported | unsupported | unsupported | 64.2 KiB | unsupported | unsupported | 64.2 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | records-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 1 MiB | unsupported | unsupported | 1 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | records-8m | 8 MiB | 8 MiB | unsupported | unsupported | unsupported | 8 MiB | unsupported | unsupported | 8 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | compose-merge-2k | 2.14 KiB | 2.16 KiB | unsupported | unsupported | unsupported | 2.16 KiB | unsupported | unsupported | 2.16 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | compose-merge-64k | 64.1 KiB | 64.1 KiB | unsupported | unsupported | unsupported | 64.1 KiB | unsupported | unsupported | 64.1 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | compose-merge-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 1 MiB | unsupported | unsupported | 1 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | k8s-multi-16k | 16.4 KiB | 16.4 KiB | unsupported | unsupported | unsupported | 16.4 KiB | unsupported | unsupported | 16.4 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | k8s-multi-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 1 MiB | unsupported | unsupported | 1 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | openapi-100k | 101 KiB | 101 KiB | unsupported | unsupported | unsupported | 101 KiB | unsupported | unsupported | 101 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | openapi-8m | 8 MiB | 8 MiB | unsupported | unsupported | unsupported | 8 MiB | unsupported | unsupported | 8 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | helm-values-64k | 64 KiB | 64.1 KiB | unsupported | unsupported | unsupported | 64.1 KiB | unsupported | unsupported | 64.1 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | helm-values-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 1 MiB | unsupported | unsupported | 1 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | deep-block | 5.23 KiB | 5.26 KiB | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 5.26 KiB | no rival |
| unchanged emit | deep-flow | 202 B | 232 B | unsupported | unsupported | unsupported | rejects [7] | unsupported | unsupported | 232 B | no rival |
| unchanged emit | wide-map-64k | 64 KiB | 64 KiB | unsupported | unsupported | unsupported | 64 KiB | unsupported | unsupported | 64 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | wide-map-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 1 MiB | unsupported | unsupported | 1 MiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | long-scalars-256k | 261 KiB | 261 KiB | unsupported | unsupported | unsupported | 261 KiB | unsupported | unsupported | 261 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | flow-heavy-64k | 64 KiB | 64 KiB | unsupported | unsupported | unsupported | 64 KiB | unsupported | unsupported | 64 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | anchors-32k | 32 KiB | 32 KiB | unsupported | unsupported | unsupported | 32 KiB | unsupported | unsupported | 32 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | unicode-32k | 32 KiB | 32.1 KiB | unsupported | unsupported | unsupported | 32.1 KiB | unsupported | unsupported | 32.1 KiB | 1.00× of sharpyaml-syntax ● tie |
| unchanged emit | scalar-styles-32k | 32 KiB | 32.1 KiB | unsupported | unsupported | unsupported | 32.1 KiB | unsupported | unsupported | 32.1 KiB | 1.00× of sharpyaml-syntax ● tie |
| edit script | compose-wordpress | 815 B | 2.48 KiB | unsupported | unsupported | unsupported | 238 KiB † | unsupported | unsupported | 2.48 KiB | 0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | gha-workflow | 9.43 KiB | 11.1 KiB | unsupported | unsupported | unsupported | 2.93 MiB † | unsupported | unsupported | 11.1 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-ingress-nginx | 52.4 KiB | 54.4 KiB | unsupported | unsupported | unsupported | 6.03 MiB † | unsupported | unsupported | 54.4 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-api-with-examples | 6.75 KiB | 7.7 KiB | unsupported | unsupported | unsupported | 621 KiB † | unsupported | unsupported | 7.7 KiB | 0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-petstore | 5.34 KiB | 5.5 KiB | unsupported | unsupported | unsupported | 1.48 MiB † | unsupported | unsupported | 5.5 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | prometheus-config | 1.1 KiB | 2.1 KiB | unsupported | unsupported | unsupported | 127 KiB † | unsupported | unsupported | 2.1 KiB | 0.02× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | reference-a | 51 B | 536 B | unsupported | unsupported | unsupported | 15.6 KiB † | unsupported | unsupported | 536 B | 0.03× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | reference-b | 51 B | 536 B | unsupported | unsupported | unsupported | 15.6 KiB † | unsupported | unsupported | 536 B | 0.03× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-4k | 4.14 KiB | 5.7 KiB | unsupported | unsupported | unsupported | 1.92 MiB † | unsupported | unsupported | 5.7 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-64k | 64.2 KiB | 65.8 KiB | unsupported | unsupported | unsupported | 29.6 MiB † | unsupported | unsupported | 65.8 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 469 MiB † | unsupported | unsupported | 1 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | records-8m | 8 MiB | 8 MiB | unsupported | unsupported | unsupported | 3.63 GiB † | unsupported | unsupported | 8 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-2k | 2.14 KiB | 3.42 KiB | unsupported | unsupported | unsupported | 752 KiB † | unsupported | unsupported | 3.42 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-64k | 64.1 KiB | 65.8 KiB | unsupported | unsupported | unsupported | 21.3 MiB † | unsupported | unsupported | 65.8 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | compose-merge-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 335 MiB † | unsupported | unsupported | 1 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-100k | 101 KiB | 102 KiB | unsupported | unsupported | unsupported | 34 MiB † | unsupported | unsupported | 102 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | openapi-8m | 8 MiB | 8 MiB | unsupported | unsupported | unsupported | 2.43 GiB † | unsupported | unsupported | 8 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-values-64k | 64 KiB | 65.6 KiB | unsupported | unsupported | unsupported | 17.2 MiB † | unsupported | unsupported | 65.6 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | helm-values-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 274 MiB † | unsupported | unsupported | 1 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | wide-map-64k | 64 KiB | 64.9 KiB | unsupported | unsupported | unsupported | 15.7 MiB † | unsupported | unsupported | 64.9 KiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| edit script | wide-map-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | 237 MiB † | unsupported | unsupported | 1 MiB | <0.01× of sharpyaml-syntax † (harness-rendered) ▲ win |
| patch (RFC 6902) | compose-wordpress | 815 B | 2.66 KiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 2.66 KiB | no rival |
| patch (RFC 6902) | gha-workflow | 9.43 KiB | 10.8 KiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 10.8 KiB | no rival |
| patch (RFC 6902) | reference-a | 51 B | 432 B | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 432 B | no rival |
| patch (RFC 6902) | reference-b | 51 B | 432 B | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 432 B | no rival |
| patch (RFC 6902) | records-4k | 4.14 KiB | 5.4 KiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 5.4 KiB | no rival |
| patch (RFC 6902) | records-64k | 64.2 KiB | 65.5 KiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 65.5 KiB | no rival |
| patch (RFC 6902) | records-1m | 1 MiB | 1 MiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 1 MiB | no rival |
| patch (RFC 6902) | records-8m | 8 MiB | 8 MiB | unsupported | unsupported | unsupported | unsupported | unsupported | differs [12] | 8 MiB | no rival |
Cells without a number, with what the correctness guard found:
sharpyaml(rejects; generic-load ×2, dump ×2): Stops at its default nesting limit, which the benchmark leaves as it is. What the guard found, in generic-load ondeep-block:default limit, not raised: YamlException: The maximum nesting depth of 64 has be…sharpyaml(differs; dump ×4): Writes a float with no fractional part (812.0) as 812, so a YAML 1.2 reader reads it back as an integer. What the guard found, in dump onrecords-4k:read back: at /1/score: got 812, expected 812.0sharpyaml-model(differs; dump ×1): What the guard found, in dump onunicode-32k:read back: at /2: got "Ø3DÞ00 grin 0", expected "\uD83D\uDE00 grin 0"sharpyaml-model(differs; dump ×1): What the guard found, in dump onlong-scalars-256k:read back: at /folded: got "epsilon zeta psi omega delta xi epsilon mu beta theta rho alpha psi delta delta…, expected "epsilon zeta psi omega delta xi epsilon mu beta theta rho alpha psi delta delta…sharpyaml-model(differs; dump ×1): What the guard found, in dump ongha-workflow:read back: at /jobs/test-output/steps/2/run: got "echo \"Commit: ${{ steps.checkout.outputs.commit }}\"\necho \"Ref: ${{ steps.ch…, expected "echo \"Commit: ${{ steps.checkout.outputs.commit }}\"\nec…sharpyaml-model(rejects; generic-load ×2, dump ×2): Stops at its default nesting limit, which the benchmark leaves as it is. What the guard found, in generic-load ondeep-block:default limit, not raised: YamlException: The maximum nesting depth of 64 has be…sharpyaml-syntax(rejects; document-parse ×2, unchanged-emit ×2): Stops at its default nesting limit, which the benchmark leaves as it is. What the guard found, in document-parse ondeep-block:default limit, not raised: YamlException: The maximum nesting depth of 64 has be…vyaml(differs; dump ×1): What the guard found, in dump onlong-scalars-256k:read back: at /folded: got "epsilon zeta psi omega delta xi epsilon mu beta theta rho alpha psi delta delta…, expected "epsilon zeta psi omega delta xi epsilon mu beta theta rho alpha psi delta delta…vyaml(differs; dump ×3): A string that ends with a newline reads back without that final newline. What the guard found, in dump onreference-a:read back: at /b: got "this is a test", expected "this is a test\n"vyaml(differs; dump ×4): Writes a float with no fractional part (812.0) as 812, so a YAML 1.2 reader reads it back as an integer. What the guard found, in dump onrecords-4k:read back: at /1/score: got 812, expected 812.0vyaml(differs; dump ×1): Writes a string that looks like a number (05509, 1.5) without quotes, so it reads back as a number. What the guard found, in dump onhelm-ingress-nginx:read back: at /defaultBackend/image/tag: got 1.5, expected "1.5"yaml2jsonnode(differs; patch ×8): Patches a JSON tree and writes it back as YAML, so comments, blank lines and quoting are not kept (it is not lossless). What the guard found, in patch oncompose-wordpress:byte 20: got 694 bytes ":\n db:\n image: \"mariadb:11.4\"\n ", expected 860 bytes ":\n db:\n # We use a mariadb image"yamldotnet(rejects; dump ×2): Stops at its default nesting limit, which the benchmark leaves as it is. What the guard found, in dump ondeep-block:default limit, not raised: MaximumRecursionLevelReachedException: Too much recur…yamldotnet(differs; dump ×4): Writes a float with no fractional part (812.0) as 812, so a YAML 1.2 reader reads it back as an integer. What the guard found, in dump onrecords-4k:read back: at /1/score: got 812, expected 812.0
Relative figures are ours ÷ the strongest competitor in that row, so below 1.0× is better for us and ▼ marks a loss. A † marks a cell measured differently from the task as specified; the note beside each mark says how. Cells without a number say why. The verdict of a task in the chart and the first table is never better than the real-world workloads allow, nor better than all of the task's workloads in these tables allow, generated and reference ones included, while its speed figure is over the real-world workloads.
Method: full run of 2026-10-18T00:48:41Z. Kit 0.1.0 (revision 6cc83d12fbc6); text generated by kit revision c1647a46aa6d. oneyaml-csharp c23a19250217; competitors yamldotnet 18.1.0, sharpyaml 3.16.0, sharpyaml-model 3.16.0, sharpyaml-syntax 3.16.0, vyaml 1.4.1, yaml2jsonnode 3.0.1, oneyaml-csharp-gen c23a19250217. Runtime .NET 10.0.11 (target linux-x64), measured with BenchmarkDotNet 0.15.8: mean time per task from BenchmarkDotNet's ShortRun job (3 warm-up and 3 measured iterations) run in process; one invocation per iteration runs a batch of prepared tasks and the time is divided by the batch size; every cell is measured in a process of its own, because the heap that earlier cells leave behind changed the result. Each process runs with DOTNET_TC_CallCountingDelayMs=0 (call counting starts immediately instead of after the default delay), and no other DOTNET_ or COMPlus_ variable set, and every cell is first warmed up for 1000 ms of whole batches before BenchmarkDotNet's own warm-up, because a new process starts at the runtime's unoptimised tier. Memory: bytes allocated per task from BenchmarkDotNet's MemoryDiagnoser; allocation calls are not available. AMD Ryzen 9 7950X3D 16-Core Processor (125.0 GiB), Linux 7.0.0-34-generic (x86_64), measured on a shared workstation (32 logical CPUs; load 3.72 before, 4.52 after, at most 8.48 during).
Writing a document back
The unchanged emit rows time YamlDocument.ToUtf8Bytes() on a document that was not edited, and each call returns a new array. Where another library writes a file back faster, its unchanged emit row in Results is marked ▼ loss, and the verdict in Results at a glance counts it. Most of the time in those rows is the operating system supplying fresh memory pages for the new output array right after a garbage collection, and every library in the run pays that cost the same way (the kit's .NET harness notes describe it). That is what this run measured on this host, not a bound.
If you write large documents again and again, WriteTo(IBufferWriter<byte>) and WriteTo(Stream) write into a buffer you own and reuse, so they do not allocate a new output array on every call the way ToUtf8Bytes() does (Input, output and lifetime). The benchmarks do not measure those calls, so this page has no figure for them.
Running the benchmarks yourself
The published numbers come from the kit, which runs every library on the same workloads. To measure a checkout of this repository there, set KIT_ONEYAML_CSHARP_SRC to it and follow the kit's benchmark notes.
This repository also has BenchmarkDotNet benchmarks in bench/OneYaml.Benchmarks, used while developing; their README says how to run them. Their results are not the published ones.