Recursive AI

Performance

All oneyaml Go docs

This page compares the time and memory of oneyaml-go with those of the other Go YAML libraries. Every library runs the same tasks on the same inputs, through the benchmark of oneyaml-kit, the kit shared by the oneyaml libraries. The tables under Results are generated from the kit's result file, and none of their numbers is typed by hand. The summary at the top of the README is generated from the same file.

The figures are measured, not bounds. They describe these inputs on this machine, and your files and hardware will give other numbers.

About this run

  • Library: oneyaml-go 1.0.0. The figures are for the code released as v1.0.0, at commit eea67bb; the tag sits on a later commit that changes no library code. This page is generated again from a new run at each release.
  • Competitors: go.yaml.in/yaml/v3, the maintained fork of yaml.v3 (yaml-v3 in the tables), go.yaml.in/yaml/v4 (yaml-v4), gopkg.in/yaml.v2 (yaml-v2), sigs.k8s.io/yaml (sigs-yaml) and github.com/goccy/go-yaml (goccy-go-yaml). For patches, they are github.com/palantir/pkg/yamlpatch with its yaml.v3 back end (palantir-yamlpatch) and with its goccy/go-yaml back end (palantir-yamlpatch-goccy), and github.com/evanphx/json-patch/v5 on top of sigs.k8s.io/yaml (json-patch). The method line under each table gives the exact versions.
  • Machine and date: a full run on 2026-10-16, on a shared workstation, not a reserved machine. Other work ran on it at the same time, and the method line under each table records the host's load before the run, after it and at its highest during it. The cells run one after another, so a busy moment slows only the cells measured during it, ours or a competitor's; weigh a close result with that in mind. The method line also gives the CPU, the operating system and the Go version.
  • Kit: revision 0abba1d. The kit's benchmark notes at that revision describe the method in full. This page summarises them.

What is measured

Tasks

Each task starts from a state that is built outside the clock, fresh for every iteration, with one exception. In unchanged emit, a write can take nanoseconds, so a library whose write of a used document allocates the same as a write of a fresh one shares one parsed document between iterations. oneyaml-go's write allocates nothing either way. The timed work is what a caller of the library does.

TaskTimed work, as oneyaml-go does itThe answer is accepted when
typed loadUnmarshal into Go structsthe structs, written as JSON, equal the expected value
generic loadUnmarshal into any, or a Decoder for every document of a streamthe value, written as JSON, equals the expected value
dumpMarshal of the library's own value tree, which was read from the inputtwo independent reference parsers read the text back to the expected value
document parseParse into a Document that keeps comments, spacing and stylesthe document holds the expected value and writes the input back byte for byte
unchanged emitDocument.Bytes on a document that was not editedthe bytes equal the input
edit scripta fixed list of replacements and removals with Document.Set and Document.Remove, then Document.Bytesthe bytes equal the expected bytes exactly: only the edited values change, each in its own style
patch (RFC 6902)Parse, Document.Apply with a JSON Patch, then Document.Bytesthe bytes equal the expected bytes, and a second patch with a failing step leaves the text unchanged and returns an error

The competitors do the same work through their own APIs. For the document tasks that means yaml.v3's and yaml/v4's Node and goccy/go-yaml's AST. In the Go harness, every library's patch is timed from text to text: read the file, apply the patch, and write the text back. A library that cannot do a task at all, such as a library with no lossless document, gets an "unsupported" cell, which is not a loss.

Workloads

The inputs are real files, vendored byte for byte with their source and licence: a GitHub Actions workflow, a Compose file, Helm chart values, two OpenAPI descriptions, a multi-document Kubernetes manifest and a Prometheus configuration. Generated inputs add typed records, Compose files with anchors and merge keys, Kubernetes streams, OpenAPI and Helm-style documents and a flat wide mapping at several sizes, and stress shapes: deep nesting, long scalars of every style, flow-heavy data, anchors and aliases, Unicode, and every scalar style and chomping mode. Two small reference cases edit a block scalar. The kit's notes at the run's revision list them under Workloads.

The expected values do not come from any of the libraries being measured. A generated input and its value come from the same generator. A real file's value is accepted only when two independent YAML 1.2 parsers agree on it. The expected bytes after an edit are exact text substitutions on the input.

The correctness check before timing

Each library's answer is checked before it is timed. A library gets a number only if its answer was right. A wrong answer is marked "differs" and a refused input is marked "rejects", and neither carries a time or a memory figure. The report of the run lists every such cell with the first difference the check found. See the correctness guard in the kit's notes at the run's revision.

Time and memory

The time is the ns/op that Go's testing.Benchmark reports, so it is a mean over the iterations of the benchmark. In a full run each cell runs for Go's standard benchtime of one second. The memory figures are the bytes and allocations per operation that testing.B reports with ReportAllocs. They count what was allocated during the timed work, not the peak size of the heap.

Reading the tables

Each row compares oneyaml-go with the strongest competitor in that row: the fastest for time, and the one that allocated least for memory. The ratio is our figure divided by theirs, so below 1.0× is better for oneyaml-go. A small gap counts as a tie (the kit's verdicts at the run's revision give the bands: under 5% for time and 2% for memory), and a loss is marked ▼.

A note in parentheses after a time names the answer a competitor was checked against when it is not the plain one. (merged) means it applied << merge keys while loading, a YAML 1.1 extension, and was checked against the merged value; YAML 1.2, and oneyaml-go by default, read << as an ordinary key. Such a cell did different work from ours and is still compared with. (value-only) is explained by the † below.

A † marks a cell that was not measured on exactly the task as specified, for example json-patch, which works on JSON and so cannot keep the text of the file. It is still compared with. In this Go run every patch cell carries a † for "text API", ours included: every library's patch is timed from the input text to the output text, and the palantir-yamlpatch cells passed the same byte-for-byte check as ours, so that mark does not mean less work. Only the "value-only" json-patch cells were judged more loosely. So on a patch cell in this run, a † says how the cell was measured, not that it did less work.

The README summary takes, for each task, the geometric mean over the real-world files that task has. It states the ratio the other way round, as how many times faster oneyaml-go was: the competitor's time divided by ours, so higher is better there. The tables below show every workload.

Unchanged emit

The unchanged-emit ratio is much further below 1.0× than that of any other row, and it does not measure how fast oneyaml-go renders YAML. A Document keeps the text it parsed. Bytes on a document that was not edited returns that text without copying it, so its cost does not grow with the size of the file. The competitors build their text again from a Node tree or an AST. The task measures what a caller pays to write back a file they did not change, which is a real use, but the gap comes from not rendering, not from rendering faster. For the time it takes to write YAML from values, see the dump row. For the time an edit takes, including writing the result, see the edit-script row.

Rows with no rival

A row says "no rival" when oneyaml-go gave a correct answer and no competitor did. There is no comparison in such a row, so it is not a win and it is not counted as one. In this run those rows are:

  • document parse, unchanged emit and edit script on several real files and generated inputs: the competitors' documents did not write the input back byte for byte. They changed blank lines, indentation, quoting or escapes, or the layout of a flow collection. In the edit script on the reference-b case, goccy/go-yaml also wrote the edited block scalar as a plain scalar, so the text lost its style.
  • dump on the typed-records inputs: the text the competitors wrote did not read back to the expected value. For example, a float with a whole-number value came back as an integer, or a string of digits lost its quotes and came back as a number.
  • patch on the GitHub Actions workflow: the competitors' output differed from the expected bytes, or the patch was refused.

The report of the run gives the first difference for each of these cells.

Reproducing the run

From a checkout of oneyaml-kit at the revision above, with KIT_ONEYAML_GO_SRC set to a checkout of this repository at v1.0.0:

Terminal
bin/bench run --mode full --lang go
bin/bench readme --results out --library oneyaml-go --readme <oneyaml-go>/README.md --docs <oneyaml-go>/docs --charts docs/img

The first command writes the result file, a report with every cell and charts under out/bench. The second writes the generated blocks of this page and of the README, and the README's charts. The blocks on this page were written by bin/bench readme at the run's kit revision, from that result file. A full run is a result wherever it runs, and its method line says what kind of machine it ran on and, for a local machine, the host's load. A quick run, or a run started with --smoke, is labelled a smoke result. It shows the layout and the rough picture but it is not a claim, and bin/bench readme refuses it unless you pass --allow-smoke, which labels every block.

Results

Time per operation

TaskWorkloadInputoneyaml-goyaml-v3yaml-v4yaml-v2sigs-yamlgoccy-go-yamlpalantir-yamlpatchpalantir-yamlpatch-goccyjson-patchOurs vs strongest competitor
typed loadgha-workflow9.43 KiB121 µs301 µs310 µs234 µsdiffers [13]935 µsunsupportedunsupportedunsupported0.52× of yaml-v2 ▲ win
typed loadrecords-4k4.14 KiB104 µs259 µs251 µs196 µs376 µs619 µsunsupportedunsupportedunsupported0.53× of yaml-v2 ▲ win
typed loadrecords-64k64.2 KiB1.44 ms5.11 ms4.89 ms3.31 ms5.95 ms10.3 msunsupportedunsupportedunsupported0.44× of yaml-v2 ▲ win
typed loadrecords-1m1 MiB23.7 ms69.5 ms70.2 ms55.9 ms93.7 ms166 msunsupportedunsupportedunsupported0.42× of yaml-v2 ▲ win
typed loadrecords-8m8 MiB155 ms507 ms487 ms395 ms666 ms1.4 sunsupportedunsupportedunsupported0.39× of yaml-v2 ▲ win
generic loadcompose-wordpress815 B7.06 µs27.3 µs28.1 µs21.3 µsdiffers [16]40.7 µsunsupportedunsupportedunsupported0.33× of yaml-v2 ▲ win
generic loadgha-workflow9.43 KiB105 µs334 µs371 µsdiffers [18]differs [13]747 µsunsupportedunsupportedunsupported0.31× of yaml-v3 ▲ win
generic loadhelm-ingress-nginx52.4 KiB168 µs988 µs942 µs555 µsdiffers [16]1.54 msunsupportedunsupportedunsupported0.30× of yaml-v2 ▲ win
generic loadk8s-ingress-nginx-multi16 KiB263 µs682 µs636 µs565 µsdiffers [15]1.13 msunsupportedunsupportedunsupported0.47× of yaml-v2 ▲ win
generic loadopenapi-api-with-examples6.75 KiB44.5 µs146 µs150 µs126 µs182 µs252 µsunsupportedunsupportedunsupported0.35× of yaml-v2 ▲ win
generic loadopenapi-petstore5.34 KiB58.3 µs164 µs173 µs140 µs250 µs454 µsunsupportedunsupportedunsupported0.42× of yaml-v2 ▲ win
generic loadprometheus-config1.1 KiB7.05 µs32.4 µs32.8 µs20.2 µs27.3 µs45 µsunsupportedunsupportedunsupported0.35× of yaml-v2 ▲ win
generic loadreference-a51 B1.23 µs6.38 µs6.79 µs4.57 µsdiffers [16]7.37 µsunsupportedunsupportedunsupported0.27× of yaml-v2 ▲ win
generic loadreference-b51 B1.32 µs6.85 µs6.76 µs5.06 µsdiffers [16]9.99 µsunsupportedunsupportedunsupported0.26× of yaml-v2 ▲ win
generic loadrecords-4k4.14 KiB72.4 µs289 µs270 µs216 µsdiffers [16]441 µsunsupportedunsupportedunsupported0.34× of yaml-v2 ▲ win
generic loadrecords-64k64.2 KiB1.31 ms5.36 ms5.39 ms4.46 msdiffers [16]10.4 msunsupportedunsupportedunsupported0.29× of yaml-v2 ▲ win
generic loadrecords-1m1 MiB19.6 ms74.2 ms74.6 ms62.9 msdiffers [16]138 msunsupportedunsupportedunsupported0.31× of yaml-v2 ▲ win
generic loadrecords-8m8 MiB140 ms538 ms531 ms441 msdiffers [16]1.21 sunsupportedunsupportedunsupported0.32× of yaml-v2 ▲ win
generic loadcompose-merge-2k2.14 KiB57.4 µs178 µs (merged)180 µs (merged)140 µs (merged)differs [16]280 µs (merged)unsupportedunsupportedunsupported0.41× of yaml-v2 ▲ win
generic loadcompose-merge-64k64.1 KiB1.65 ms5.01 ms (merged)5.51 ms (merged)4.18 ms (merged)differs [16]10.4 ms (merged)unsupportedunsupportedunsupported0.40× of yaml-v2 ▲ win
generic loadcompose-merge-1m1 MiB24.4 ms105 ms (merged)112 ms (merged)53.6 ms (merged)differs [16]166 ms (merged)unsupportedunsupportedunsupported0.46× of yaml-v2 ▲ win
generic loadk8s-multi-16k16.4 KiB451 µs1.28 ms1.23 ms836 µsdiffers [15]2.7 msunsupportedunsupportedunsupported0.54× of yaml-v2 ▲ win
generic loadk8s-multi-1m1 MiB22.8 ms57.4 ms62.8 ms47.3 msdiffers [15]138 msunsupportedunsupportedunsupported0.48× of yaml-v2 ▲ win
generic loadopenapi-100k101 KiB1.79 ms4.92 ms5.99 ms4.26 ms7.2 ms12.7 msunsupportedunsupportedunsupported0.42× of yaml-v2 ▲ win
generic loadopenapi-8m8 MiB113 ms722 ms733 ms283 ms457 ms1.12 sunsupportedunsupportedunsupported0.40× of yaml-v2 ▲ win
generic loadhelm-values-64k64 KiB775 µs3.35 ms3.07 ms1.75 msdiffers [16]6.84 msunsupportedunsupportedunsupported0.44× of yaml-v2 ▲ win
generic loadhelm-values-1m1 MiB10.8 ms56.5 ms58.5 ms32.4 msdiffers [16]102 msunsupportedunsupportedunsupported0.33× of yaml-v2 ▲ win
generic loaddeep-block5.23 KiB45 µs148 µs154 µs116 µsdiffers [16]299 µsunsupportedunsupportedunsupported0.39× of yaml-v2 ▲ win
generic loaddeep-flow202 B16 µs94.5 µs91.8 µs84.4 µsdiffers [16]113 µsunsupportedunsupportedunsupported0.19× of yaml-v2 ▲ win
generic loadwide-map-64k64 KiB1.25 ms18.6 ms19.6 ms4.02 msdiffers [16]27.3 msunsupportedunsupportedunsupported0.31× of yaml-v2 ▲ win
generic loadwide-map-1m1 MiB16.6 ms3.63 s3.69 s51.2 msdiffers [16]1.98 sunsupportedunsupportedunsupported0.32× of yaml-v2 ▲ win
generic loadlong-scalars-256k261 KiB663 µs3.59 ms3.51 ms3.37 ms5.45 ms11.8 msunsupportedunsupportedunsupported0.20× of yaml-v2 ▲ win
generic loadflow-heavy-64k64 KiB2.39 ms8.05 ms8.11 ms6.3 msdiffers [16]17 msunsupportedunsupportedunsupported0.38× of yaml-v2 ▲ win
generic loadanchors-32k32 KiB2.92 ms6.08 ms6.37 msdiffers [19]differs [16]6.62 msunsupportedunsupportedunsupported0.48× of yaml-v3 ▲ win
generic loadunicode-32k32 KiB272 µs995 µs950 µs896 µs1.24 ms2.11 msunsupportedunsupportedunsupported0.30× of yaml-v2 ▲ win
generic loadscalar-styles-32k32 KiB405 µs1.45 ms1.45 ms1.16 ms1.74 ms4.48 msunsupportedunsupportedunsupported0.35× of yaml-v2 ▲ win
dumpcompose-wordpress815 B1.86 µs23.3 µs34.6 µs22.9 µs57.3 µs42 µsunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
dumpgha-workflow9.43 KiB29.5 µs332 µs306 µsdiffers [18]differs [13]680 µsunsupportedunsupportedunsupported0.10× of yaml-v4 ▲ win
dumphelm-ingress-nginx52.4 KiB42.2 µs511 µs587 µs479 µs871 µs940 µsunsupportedunsupportedunsupported0.09× of yaml-v2 ▲ win
dumpopenapi-api-with-examples6.75 KiB12.7 µs192 µs202 µs159 µs323 µs324 µsunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
dumpopenapi-petstore5.34 KiB19.6 µs193 µs194 µs188 µs413 µs391 µsunsupportedunsupportedunsupported0.10× of yaml-v2 ▲ win
dumpprometheus-config1.1 KiB1.27 µs26.1 µs29.7 µs21.9 µs48.1 µs32.5 µsunsupportedunsupportedunsupported0.06× of yaml-v2 ▲ win
dumpreference-a51 B222 ns3.55 µs4.71 µs2.85 µs9.28 µs7.51 µsunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
dumpreference-b51 B214 ns3.56 µs4.88 µs2.9 µs8.95 µs5.72 µsunsupportedunsupportedunsupported0.07× of yaml-v2 ▲ win
dumprecords-4k4.14 KiB19.4 µsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-64k64.2 KiB319 µsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-1m1 MiB6.89 msdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-8m8 MiB52.9 msdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumpcompose-merge-2k2.14 KiB16.9 µs220 µs (merged)250 µs (merged)190 µs (merged)395 µs (merged)467 µs (merged)unsupportedunsupportedunsupported0.09× of yaml-v2 ▲ win
dumpcompose-merge-64k64.1 KiB619 µs6.47 ms (merged)6.85 ms (merged)5.92 ms (merged)9.29 ms (merged)11.3 ms (merged)unsupportedunsupportedunsupported0.10× of yaml-v2 ▲ win
dumpcompose-merge-1m1 MiB14.2 ms137 ms (merged)132 ms (merged)114 ms (merged)175 ms (merged)201 ms (merged)unsupportedunsupportedunsupported0.13× of yaml-v2 ▲ win
dumpopenapi-100k101 KiB518 µs4.85 ms5.22 ms4.25 ms7.51 ms8.72 msunsupportedunsupportedunsupported0.12× of yaml-v2 ▲ win
dumpopenapi-8m8 MiB57.9 ms655 ms745 ms556 ms867 ms888 msunsupportedunsupportedunsupported0.10× of yaml-v2 ▲ win
dumphelm-values-64k64 KiB192 µs2.11 ms2.33 ms2.04 ms3.58 ms4.17 msunsupportedunsupportedunsupported0.09× of yaml-v2 ▲ win
dumphelm-values-1m1 MiB3.24 ms40 ms45.4 ms36.5 ms59.4 ms71.6 msunsupportedunsupportedunsupported0.09× of yaml-v2 ▲ win
dumpdeep-block5.23 KiB14.1 µs150 µs145 µs120 µs243 µs389 µsunsupportedunsupportedunsupported0.12× of yaml-v2 ▲ win
dumpdeep-flow202 B1.32 µs83 µs91.5 µs53.2 µs190 µs73.7 µsunsupportedunsupportedunsupported0.02× of yaml-v2 ▲ win
dumpwide-map-64k64 KiB542 µs4.95 ms5.49 ms5 ms8.19 ms9.66 msunsupportedunsupportedunsupported0.11× of yaml-v3 ▲ win
dumpwide-map-1m1 MiB11.9 ms120 ms113 ms109 ms179 ms174 msunsupportedunsupportedunsupported0.11× of yaml-v2 ▲ win
dumplong-scalars-256k261 KiB704 µs2.94 ms2.93 ms2.88 ms6.19 ms1.09 msunsupportedunsupportedunsupported0.64× of goccy-go-yaml ▲ win
dumpflow-heavy-64k64 KiB347 µs6.04 ms6.9 ms5.24 ms10.8 ms11.3 msunsupportedunsupportedunsupported0.07× of yaml-v2 ▲ win
dumpanchors-32k32 KiB855 µs11.5 ms13.2 msdiffers [19]differs [14]24.4 msunsupportedunsupportedunsupported0.07× of yaml-v3 ▲ win
dumpunicode-32k32 KiB57.3 µs832 µs934 µs715 µs1.28 ms1.32 msunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
dumpscalar-styles-32k32 KiB108 µs1.39 ms1.6 ms1.31 ms2.12 ms3.45 msunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
document parsecompose-wordpress815 B5.88 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsegha-workflow9.43 KiB63.8 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsehelm-ingress-nginx52.4 KiB133 µs844 µsdiffers [23]unsupportedunsupported1.61 msunsupportedunsupportedunsupported0.16× of yaml-v3 ▲ win
document parsek8s-ingress-nginx-multi16 KiB146 µsdiffers [21]545 µsunsupportedunsupported1.03 msunsupportedunsupportedunsupported0.27× of yaml-v4 ▲ win
document parseopenapi-api-with-examples6.75 KiB34 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parseopenapi-petstore5.34 KiB33.3 µs155 µsdiffers [23]unsupportedunsupported380 µsunsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
document parseprometheus-config1.1 KiB5.59 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsereference-a51 B1.48 µsdiffers [21]differs [23]unsupportedunsupported8.22 µsunsupportedunsupportedunsupported0.18× of goccy-go-yaml ▲ win
document parsereference-b51 B1.55 µsdiffers [21]differs [23]unsupportedunsupported7.99 µsunsupportedunsupportedunsupported0.19× of goccy-go-yaml ▲ win
document parserecords-4k4.14 KiB50.9 µs248 µsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
document parserecords-64k64.2 KiB719 µs3.74 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.19× of yaml-v3 ▲ win
document parserecords-1m1 MiB10.8 ms52.3 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
document parserecords-8m8 MiB88.3 ms400 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.22× of yaml-v3 ▲ win
document parsecompose-merge-2k2.14 KiB25.6 µsdiffers [21]105 µs (merged)unsupportedunsupported236 µs (merged)unsupportedunsupportedunsupported0.24× of yaml-v4 ▲ win
document parsecompose-merge-64k64.1 KiB665 µsdiffers [21]3 ms (merged)unsupportedunsupported7.58 ms (merged)unsupportedunsupportedunsupported0.22× of yaml-v4 ▲ win
document parsecompose-merge-1m1 MiB9.28 msdiffers [21]38.4 ms (merged)unsupportedunsupported131 ms (merged)unsupportedunsupportedunsupported0.24× of yaml-v4 ▲ win
document parsek8s-multi-16k16.4 KiB216 µsdiffers [21]differs [23]unsupportedunsupported2.26 msunsupportedunsupportedunsupported0.10× of goccy-go-yaml ▲ win
document parsek8s-multi-1m1 MiB12 msdiffers [21]differs [23]unsupportedunsupported116 msunsupportedunsupportedunsupported0.10× of goccy-go-yaml ▲ win
document parseopenapi-100k101 KiB970 µs4.26 msdiffers [23]unsupportedunsupported9.24 msunsupportedunsupportedunsupported0.23× of yaml-v3 ▲ win
document parseopenapi-8m8 MiB72.3 ms262 msdiffers [23]unsupportedunsupported851 msunsupportedunsupportedunsupported0.28× of yaml-v3 ▲ win
document parsehelm-values-64k64 KiB475 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsehelm-values-1m1 MiB6.76 msdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsedeep-block5.23 KiB29.9 µsdiffers [21]differs [23]unsupportedunsupported202 µsunsupportedunsupportedunsupported0.15× of goccy-go-yaml ▲ win
document parsedeep-flow202 B21 µs68.9 µsdiffers [23]unsupportedunsupported88.3 µsunsupportedunsupportedunsupported0.30× of yaml-v3 ▲ win
document parsewide-map-64k64 KiB650 µs3.69 ms3.33 msunsupportedunsupported24.1 msunsupportedunsupportedunsupported0.20× of yaml-v4 ▲ win
document parsewide-map-1m1 MiB8.67 ms48.8 ms44.8 msunsupportedunsupported1.9 sunsupportedunsupportedunsupported0.19× of yaml-v4 ▲ win
document parselong-scalars-256k261 KiB401 µsdiffers [21]differs [23]unsupportedunsupported11.4 msunsupportedunsupportedunsupported0.04× of goccy-go-yaml ▲ win
document parseflow-heavy-64k64 KiB1.38 ms5.44 ms5.72 msunsupportedunsupported14.5 msunsupportedunsupportedunsupported0.25× of yaml-v3 ▲ win
document parseanchors-32k32 KiB445 µs1.87 msdiffers [23]unsupportedunsupported6.15 msunsupportedunsupportedunsupported0.24× of yaml-v3 ▲ win
document parseunicode-32k32 KiB190 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [4]unsupportedunsupportedunsupportedno rival
document parsescalar-styles-32k32 KiB244 µsdiffers [21]differs [23]unsupportedunsupported4.01 msunsupportedunsupportedunsupported0.06× of goccy-go-yaml ▲ win
unchanged emitcompose-wordpress815 B4.24 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitgha-workflow9.43 KiB4.47 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emithelm-ingress-nginx52.4 KiB4.32 ns511 µsdiffers [23]unsupportedunsupported412 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-ingress-nginx-multi16 KiB4.3 nsdiffers [21]617 µsunsupportedunsupported263 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-api-with-examples6.75 KiB4.31 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitopenapi-petstore5.34 KiB4.32 ns151 µsdiffers [23]unsupportedunsupported59.4 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitprometheus-config1.1 KiB4.36 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitreference-a51 B4.64 nsdiffers [21]differs [23]unsupportedunsupported1.12 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitreference-b51 B4.34 nsdiffers [21]differs [23]unsupportedunsupported1.13 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitrecords-4k4.14 KiB4.4 ns255 µsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-64k64.2 KiB4.42 ns4.04 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-1m1 MiB4.31 ns55.6 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-8m8 MiB4.31 ns594 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitcompose-merge-2k2.14 KiB4.44 nsdiffers [21]93 µsunsupportedunsupported33.6 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitcompose-merge-64k64.1 KiB4.64 nsdiffers [21]2.77 msunsupportedunsupported785 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitcompose-merge-1m1 MiB4.38 nsdiffers [21]51.3 msunsupportedunsupported16.2 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-multi-16k16.4 KiB4.42 nsdiffers [21]differs [23]unsupportedunsupported389 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-multi-1m1 MiB4.66 nsdiffers [21]differs [23]unsupportedunsupported20.5 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-100k101 KiB4.54 ns5.04 msdiffers [23]unsupportedunsupported1.68 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-8m8 MiB4.3 ns600 msdiffers [23]unsupportedunsupported155 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emithelm-values-64k64 KiB4.48 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emithelm-values-1m1 MiB4.51 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitdeep-block5.23 KiB4.51 nsdiffers [21]differs [23]unsupportedunsupported139 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitdeep-flow202 B4.65 ns54.5 µsdiffers [23]unsupportedunsupported12.1 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitwide-map-64k64 KiB4.63 ns4.35 ms2.81 msunsupportedunsupported766 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitwide-map-1m1 MiB4.44 ns49.9 ms49.2 msunsupportedunsupported10 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitlong-scalars-256k261 KiB4.6 nsdiffers [21]differs [23]unsupportedunsupported233 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitflow-heavy-64k64 KiB4.69 ns9.21 ms5.33 msunsupportedunsupported1.63 msunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitanchors-32k32 KiB4.69 ns1.68 msdiffers [23]unsupportedunsupported905 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitunicode-32k32 KiB4.61 nsdiffers [21]differs [23]unsupportedunsupporteddiffers [4]unsupportedunsupportedunsupportedno rival
unchanged emitscalar-styles-32k32 KiB4.61 nsdiffers [21]differs [23]unsupportedunsupported771 µsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptcompose-wordpress815 B8.68 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptgha-workflow9.43 KiB10.5 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scripthelm-ingress-nginx52.4 KiB11.3 µs570 µsdiffers [23]unsupportedunsupported580 µsunsupportedunsupportedunsupported0.02× of yaml-v3 ▲ win
edit scriptopenapi-api-with-examples6.75 KiB1.98 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptopenapi-petstore5.34 KiB16.6 µs141 µsdiffers [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupported0.12× of yaml-v3 ▲ win
edit scriptprometheus-config1.1 KiB1.76 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptreference-a51 B2.7 µsdiffers [21]differs [23]unsupportedunsupported7.1 µsunsupportedunsupportedunsupported0.38× of goccy-go-yaml ▲ win
edit scriptreference-b51 B2.23 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [1]unsupportedunsupportedunsupportedno rival
edit scriptrecords-4k4.14 KiB7.49 µs235 µsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.03× of yaml-v3 ▲ win
edit scriptrecords-64k64.2 KiB36.3 µs3.4 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.01× of yaml-v3 ▲ win
edit scriptrecords-1m1 MiB701 µs61.5 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.01× of yaml-v3 ▲ win
edit scriptrecords-8m8 MiB6.35 ms643 msdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
edit scriptcompose-merge-2k2.14 KiB6.93 µsdiffers [21]100 µsunsupportedunsupported46.3 µsunsupportedunsupportedunsupported0.15× of goccy-go-yaml ▲ win
edit scriptcompose-merge-64k64.1 KiB40.6 µsdiffers [21]2.71 msunsupportedunsupported1.26 msunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
edit scriptcompose-merge-1m1 MiB605 µsdiffers [21]50.6 msunsupportedunsupported17.4 msunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
edit scriptopenapi-100k101 KiB51.4 µs3.86 msdiffers [23]unsupportedunsupported2.02 msunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
edit scriptopenapi-8m8 MiB5 ms547 msdiffers [23]unsupportedunsupported180 msunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
edit scripthelm-values-64k64 KiB19.9 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scripthelm-values-1m1 MiB317 µsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptwide-map-64k64 KiB57.3 µs2.99 ms2.83 msunsupportedunsupported827 µsunsupportedunsupportedunsupported0.07× of goccy-go-yaml ▲ win
edit scriptwide-map-1m1 MiB962 µs51.2 ms48.1 msunsupportedunsupported12.4 msunsupportedunsupportedunsupported0.08× of goccy-go-yaml ▲ win
patch (RFC 6902)compose-wordpress815 B15.7 µs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]differs [11]92.1 µs (value-only) †0.17× of json-patch † (text API, value-only) ▲ win
patch (RFC 6902)gha-workflow9.43 KiB77.2 µs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]differs [11]rejects [6]no rival
patch (RFC 6902)reference-a51 B4.29 µs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]12.4 µs †17.8 µs (value-only) †0.35× of palantir-yamlpatch-goccy † (text API) ▲ win
patch (RFC 6902)reference-b51 B3.45 µs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [8]differs [10]16.3 µs (value-only) †0.21× of json-patch † (text API, value-only) ▲ win
patch (RFC 6902)records-4k4.14 KiB58.9 µs †unsupportedunsupportedunsupportedunsupportedunsupported582 µs †differs [12]differs [7]0.10× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-64k64.2 KiB820 µs †unsupportedunsupportedunsupportedunsupportedunsupported9.05 ms †differs [12]differs [7]0.09× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-1m1 MiB12.7 ms †unsupportedunsupportedunsupportedunsupportedunsupported131 ms †differs [12]differs [7]0.10× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-8m8 MiB96 ms †unsupportedunsupportedunsupportedunsupportedunsupported870 ms †differs [12]differs [7]0.11× of palantir-yamlpatch † (text API) ▲ win

Allocated bytes per operation (B/op)

TaskWorkloadInputoneyaml-goyaml-v3yaml-v4yaml-v2sigs-yamlgoccy-go-yamlpalantir-yamlpatchpalantir-yamlpatch-goccyjson-patchOurs vs strongest competitor
typed loadgha-workflow9.43 KiB81.3 KiB in 1,238 allocs195 KiB in 3,908 allocs196 KiB in 4,027 allocs144 KiB in 3,242 allocsdiffers [13]796 KiB in 14,521 allocsunsupportedunsupportedunsupported0.57× of yaml-v2 ▲ win
typed loadrecords-4k4.14 KiB58.8 KiB in 788 allocs150 KiB in 3,360 allocs151 KiB in 3,436 allocs114 KiB in 2,715 allocs209 KiB in 4,615 allocs585 KiB in 11,573 allocsunsupportedunsupportedunsupported0.52× of yaml-v2 ▲ win
typed loadrecords-64k64.2 KiB842 KiB in 11,916 allocs2.15 MiB in 51,238 allocs2.17 MiB in 52,358 allocs1.64 MiB in 41,182 allocs3.02 MiB in 70,076 allocs9.38 MiB in 177,038 allocsunsupportedunsupportedunsupported0.50× of yaml-v2 ▲ win
typed loadrecords-1m1 MiB13.8 MiB in 187,204 allocs33.7 MiB in 812,226 allocs34 MiB in 829,755 allocs25.6 MiB in 650,361 allocs48.5 MiB in 1,103,395 allocs147 MiB in 2,790,106 allocsunsupportedunsupportedunsupported0.54× of yaml-v2 ▲ win
typed loadrecords-8m8 MiB116 MiB in 1,479,205 allocs267 MiB in 6,422,920 allocs269 MiB in 6,561,501 allocs203 MiB in 5,141,571 allocs391 MiB in 8,722,305 allocs1.17 GiB in 22,057,681 allocsunsupportedunsupportedunsupported0.57× of yaml-v2 ▲ win
generic loadcompose-wordpress815 B2.69 KiB in 55 allocs20.9 KiB in 341 allocs21.2 KiB in 354 allocs15.8 KiB in 295 allocsdiffers [16]50.8 KiB in 931 allocsunsupportedunsupportedunsupported0.17× of yaml-v2 ▲ win
generic loadgha-workflow9.43 KiB45 KiB in 645 allocs216 KiB in 4,249 allocs218 KiB in 4,368 allocsdiffers [18]differs [13]750 KiB in 12,692 allocsunsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
generic loadhelm-ingress-nginx52.4 KiB41.4 KiB in 419 allocs559 KiB in 6,234 allocs562 KiB in 6,422 allocs218 KiB in 4,234 allocsdiffers [16]1.7 MiB in 24,155 allocsunsupportedunsupportedunsupported0.19× of yaml-v2 ▲ win
generic loadk8s-ingress-nginx-multi16 KiB202 KiB in 1,380 allocs403 KiB in 8,670 allocs403 KiB in 8,791 allocs335 KiB in 7,603 allocsdiffers [15]1.37 MiB in 25,154 allocsunsupportedunsupportedunsupported0.60× of yaml-v2 ▲ win
generic loadopenapi-api-with-examples6.75 KiB20.9 KiB in 259 allocs88 KiB in 1,475 allocs125 KiB in 1,540 allocs75.4 KiB in 1,371 allocs133 KiB in 2,158 allocs349 KiB in 5,219 allocsunsupportedunsupportedunsupported0.28× of yaml-v2 ▲ win
generic loadopenapi-petstore5.34 KiB28.7 KiB in 313 allocs120 KiB in 2,123 allocs122 KiB in 2,208 allocs102 KiB in 1,842 allocs189 KiB in 2,858 allocs453 KiB in 7,441 allocsunsupportedunsupportedunsupported0.28× of yaml-v2 ▲ win
generic loadprometheus-config1.1 KiB3.06 KiB in 39 allocs27.6 KiB in 319 allocs27.8 KiB in 334 allocs16 KiB in 240 allocs24.6 KiB in 369 allocs51.3 KiB in 825 allocsunsupportedunsupportedunsupported0.19× of yaml-v2 ▲ win
generic loadreference-a51 B481 B in 7 allocs8.75 KiB in 74 allocs8.85 KiB in 78 allocs6.2 KiB in 61 allocsdiffers [16]9.42 KiB in 213 allocsunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
generic loadreference-b51 B481 B in 7 allocs8.75 KiB in 74 allocs8.85 KiB in 78 allocs6.2 KiB in 61 allocsdiffers [16]9.42 KiB in 213 allocsunsupportedunsupportedunsupported0.08× of yaml-v2 ▲ win
generic loadrecords-4k4.14 KiB22.8 KiB in 439 allocs170 KiB in 3,896 allocs171 KiB in 3,972 allocs134 KiB in 3,251 allocsdiffers [16]558 KiB in 10,787 allocsunsupportedunsupportedunsupported0.17× of yaml-v2 ▲ win
generic loadrecords-64k64.2 KiB351 KiB in 6,629 allocs2.46 MiB in 59,521 allocs2.48 MiB in 60,641 allocs1.95 MiB in 49,465 allocsdiffers [16]8.96 MiB in 164,851 allocsunsupportedunsupportedunsupported0.18× of yaml-v2 ▲ win
generic loadrecords-1m1 MiB5.42 MiB in 107,985 allocs38.6 MiB in 942,220 allocs38.9 MiB in 959,750 allocs30.6 MiB in 780,356 allocsdiffers [16]141 MiB in 2,598,696 allocsunsupportedunsupportedunsupported0.18× of yaml-v2 ▲ win
generic loadrecords-8m8 MiB42.8 MiB in 854,968 allocs306 MiB in 7,450,690 allocs308 MiB in 7,589,271 allocs242 MiB in 6,169,342 allocsdiffers [16]1.12 GiB in 20,544,552 allocsunsupportedunsupportedunsupported0.18× of yaml-v2 ▲ win
generic loadcompose-merge-2k2.14 KiB28 KiB in 426 allocs99.6 KiB in 2,154 allocs100 KiB in 2,206 allocs76.7 KiB in 1,768 allocsdiffers [16]303 KiB in 5,763 allocsunsupportedunsupportedunsupported0.37× of yaml-v2 ▲ win
generic loadcompose-merge-64k64.1 KiB826 KiB in 12,559 allocs2.67 MiB in 62,157 allocs2.69 MiB in 63,557 allocs2.04 MiB in 50,650 allocsdiffers [16]9.32 MiB in 164,901 allocsunsupportedunsupportedunsupported0.40× of yaml-v2 ▲ win
generic loadcompose-merge-1m1 MiB12.7 MiB in 200,789 allocs41.5 MiB in 965,903 allocs41.8 MiB in 987,612 allocs31.7 MiB in 786,856 allocsdiffers [16]266 MiB in 2,561,566 allocsunsupportedunsupportedunsupported0.40× of yaml-v2 ▲ win
generic loadk8s-multi-16k16.4 KiB305 KiB in 2,281 allocs704 KiB in 14,216 allocs703 KiB in 14,634 allocs576 KiB in 12,387 allocsdiffers [15]2.36 MiB in 41,912 allocsunsupportedunsupportedunsupported0.53× of yaml-v2 ▲ win
generic loadk8s-multi-1m1 MiB10.8 MiB in 139,019 allocs41.6 MiB in 869,070 allocs41.6 MiB in 894,808 allocs34.2 MiB in 757,097 allocsdiffers [15]210 MiB in 2,566,830 allocsunsupportedunsupportedunsupported0.32× of yaml-v2 ▲ win
generic loadopenapi-100k101 KiB801 KiB in 9,676 allocs3.03 MiB in 61,776 allocs3.07 MiB in 64,197 allocs2.47 MiB in 52,998 allocs4.93 MiB in 83,621 allocs11.5 MiB in 183,059 allocsunsupportedunsupportedunsupported0.32× of yaml-v2 ▲ win
generic loadopenapi-8m8 MiB63.1 MiB in 828,253 allocs243 MiB in 4,958,983 allocs246 MiB in 5,153,246 allocs198 MiB in 4,253,511 allocs388 MiB in 6,707,707 allocs1.74 GiB in 14,714,040 allocsunsupportedunsupportedunsupported0.32× of yaml-v2 ▲ win
generic loadhelm-values-64k64 KiB235 KiB in 2,658 allocs1.94 MiB in 29,222 allocs1.95 MiB in 30,172 allocs1.05 MiB in 22,957 allocsdiffers [16]5.87 MiB in 96,855 allocsunsupportedunsupportedunsupported0.22× of yaml-v2 ▲ win
generic loadhelm-values-1m1 MiB3.65 MiB in 44,988 allocs32.6 MiB in 461,687 allocs32.9 MiB in 476,677 allocs16.6 MiB in 362,749 allocsdiffers [16]131 MiB in 1,532,043 allocsunsupportedunsupportedunsupported0.22× of yaml-v2 ▲ win
generic loaddeep-block5.23 KiB33.3 KiB in 205 allocs133 KiB in 1,165 allocs134 KiB in 1,269 allocs120 KiB in 963 allocsdiffers [16]285 KiB in 3,384 allocsunsupportedunsupportedunsupported0.28× of yaml-v2 ▲ win
generic loaddeep-flow202 B4.03 KiB in 203 allocs146 KiB in 862 allocs145 KiB in 957 allocs141 KiB in 862 allocsdiffers [16]126 KiB in 2,364 allocsunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
generic loadwide-map-64k64 KiB403 KiB in 7,429 allocs2.73 MiB in 51,538 allocs2.74 MiB in 51,542 allocs2.25 MiB in 43,507 allocsdiffers [16]64.4 MiB in 156,570 allocsunsupportedunsupportedunsupported0.17× of yaml-v2 ▲ win
generic loadwide-map-1m1 MiB4.04 MiB in 108,125 allocs37.4 MiB in 747,437 allocs37.4 MiB in 747,432 allocs30.3 MiB in 630,438 allocsdiffers [16]11.2 GiB in 2,269,268 allocsunsupportedunsupportedunsupported0.13× of yaml-v2 ▲ win
generic loadlong-scalars-256k261 KiB267 KiB in 15 allocs2.19 MiB in 26,140 allocs2.19 MiB in 26,144 allocs2.19 MiB in 26,132 allocs4.74 MiB in 26,212 allocs10.2 MiB in 127,457 allocsunsupportedunsupportedunsupported0.12× of yaml-v2 ▲ win
generic loadflow-heavy-64k64 KiB562 KiB in 13,496 allocs3.84 MiB in 90,055 allocs3.88 MiB in 93,319 allocs3.06 MiB in 79,825 allocsdiffers [16]17 MiB in 294,329 allocsunsupportedunsupportedunsupported0.18× of yaml-v2 ▲ win
generic loadanchors-32k32 KiB1.87 MiB in 21,130 allocs3.54 MiB in 79,510 allocs3.55 MiB in 80,153 allocsdiffers [19]differs [16]8.41 MiB in 135,861 allocsunsupportedunsupportedunsupported0.53× of yaml-v3 ▲ win
generic loadunicode-32k32 KiB71.9 KiB in 2,905 allocs491 KiB in 11,644 allocs491 KiB in 11,648 allocs450 KiB in 11,079 allocs685 KiB in 14,012 allocs1.92 MiB in 35,519 allocsunsupportedunsupportedunsupported0.16× of yaml-v2 ▲ win
generic loadscalar-styles-32k32 KiB92.3 KiB in 2,661 allocs715 KiB in 15,981 allocs718 KiB in 16,151 allocs575 KiB in 14,486 allocs955 KiB in 21,822 allocs3.71 MiB in 71,476 allocsunsupportedunsupportedunsupported0.16× of yaml-v2 ▲ win
dumpcompose-wordpress815 B713 B in 1 allocs39.7 KiB in 135 allocs46.9 KiB in 197 allocs27.4 KiB in 135 allocs87.4 KiB in 449 allocs44.3 KiB in 1,123 allocsunsupportedunsupportedunsupported0.03× of yaml-v2 ▲ win
dumpgha-workflow9.43 KiB9.41 KiB in 1 allocs635 KiB in 1,732 allocs701 KiB in 2,431 allocsdiffers [18]differs [13]648 KiB in 16,318 allocsunsupportedunsupportedunsupported0.01× of yaml-v3 ▲ win
dumphelm-ingress-nginx52.4 KiB9.43 KiB in 1 allocs1.01e+03 KiB in 2,189 allocs1.11 MiB in 3,122 allocs667 KiB in 2,188 allocs1.01e+03 KiB in 7,136 allocs778 KiB in 20,821 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
dumpopenapi-api-with-examples6.75 KiB4.83 KiB in 1 allocs344 KiB in 720 allocs379 KiB in 1,024 allocs221 KiB in 719 allocs392 KiB in 2,321 allocs293 KiB in 6,124 allocsunsupportedunsupportedunsupported0.02× of yaml-v2 ▲ win
dumpopenapi-petstore5.34 KiB6.11 KiB in 1 allocs349 KiB in 926 allocs391 KiB in 1,320 allocs233 KiB in 926 allocs443 KiB in 3,289 allocs355 KiB in 8,091 allocsunsupportedunsupportedunsupported0.03× of yaml-v2 ▲ win
dumpprometheus-config1.1 KiB360 B in 1 allocs37.2 KiB in 117 allocs43 KiB in 173 allocs25.3 KiB in 117 allocs83.1 KiB in 390 allocs30.7 KiB in 854 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
dumpreference-a51 B49 B in 1 allocs6.84 KiB in 32 allocs7.82 KiB in 47 allocs4.77 KiB in 32 allocs15.2 KiB in 101 allocs5.73 KiB in 175 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
dumpreference-b51 B49 B in 1 allocs6.84 KiB in 32 allocs7.82 KiB in 47 allocs4.77 KiB in 32 allocs15.2 KiB in 101 allocs5.73 KiB in 175 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
dumprecords-4k4.14 KiB4.84 KiB in 1 allocsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-64k64.2 KiB73.1 KiB in 1 allocsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-1m1 MiB6.01 MiB in 40 allocsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumprecords-8m8 MiB47.8 MiB in 49 allocsdiffers [22]differs [24]differs [20]differs [17]differs [3]unsupportedunsupportedunsupportedno rival
dumpcompose-merge-2k2.14 KiB4.84 KiB in 1 allocs350 KiB in 1,167 allocs402 KiB in 1,629 allocs227 KiB in 1,166 allocs429 KiB in 3,638 allocs355 KiB in 10,182 allocsunsupportedunsupportedunsupported0.02× of yaml-v2 ▲ win
dumpcompose-merge-64k64.1 KiB130 KiB in 1 allocs18.8 MiB in 33,881 allocs20.2 MiB in 47,479 allocs12.6 MiB in 33,879 allocs15.8 MiB in 106,129 allocs10.6 MiB in 307,551 allocsunsupportedunsupportedunsupported0.01× of goccy-go-yaml ▲ win
dumpcompose-merge-1m1 MiB12.8 MiB in 55 allocs328 MiB in 526,398 allocs347 MiB in 737,974 allocs221 MiB in 526,385 allocs272 MiB in 1,649,647 allocs165 MiB in 4,828,718 allocsunsupportedunsupportedunsupported0.08× of goccy-go-yaml ▲ win
dumpopenapi-100k101 KiB106 KiB in 1 allocs14.5 MiB in 27,536 allocs15.7 MiB in 39,491 allocs9.79 MiB in 27,535 allocs12.8 MiB in 89,944 allocs9.23 MiB in 253,914 allocsunsupportedunsupportedunsupported0.01× of goccy-go-yaml ▲ win
dumpopenapi-8m8 MiB59.5 MiB in 63 allocs1.54 GiB in 2,208,530 allocs1.63 GiB in 3,169,591 allocs1.04 GiB in 2,208,529 allocs1.27 GiB in 7,218,664 allocs749 MiB in 20,690,480 allocsunsupportedunsupportedunsupported0.08× of goccy-go-yaml ▲ win
dumphelm-values-64k64 KiB40.7 KiB in 1 allocs6.14 MiB in 12,346 allocs6.79 MiB in 17,458 allocs4.12 MiB in 12,345 allocs5.45 MiB in 39,285 allocs3.87 MiB in 113,017 allocsunsupportedunsupportedunsupported0.01× of goccy-go-yaml ▲ win
dumphelm-values-1m1 MiB641 KiB in 1 allocs130 MiB in 194,889 allocs139 MiB in 275,810 allocs87 MiB in 194,888 allocs108 MiB in 620,604 allocs62.1 MiB in 1,815,537 allocsunsupportedunsupportedunsupported0.01× of goccy-go-yaml ▲ win
dumpdeep-block5.23 KiB10.8 KiB in 1 allocs403 KiB in 648 allocs385 KiB in 953 allocs250 KiB in 646 allocs523 KiB in 1,912 allocs890 KiB in 4,293 allocsunsupportedunsupportedunsupported0.04× of yaml-v2 ▲ win
dumpdeep-flow202 B218 B in 1 allocs158 KiB in 29 allocs175 KiB in 237 allocs98.5 KiB in 29 allocs240 KiB in 892 allocs51.3 KiB in 1,115 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
dumpwide-map-64k64 KiB74.5 KiB in 1 allocs8.31 MiB in 20,517 allocs9.57 MiB in 32,273 allocs5.66 MiB in 20,517 allocs8.34 MiB in 68,379 allocs6.96 MiB in 261,963 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
dumpwide-map-1m1 MiB14.4 MiB in 61 allocs164 MiB in 297,118 allocs181 MiB in 468,111 allocs111 MiB in 297,118 allocs150 MiB in 990,610 allocs106 MiB in 4,251,146 allocsunsupportedunsupportedunsupported0.14× of goccy-go-yaml ▲ win
dumplong-scalars-256k261 KiB332 KiB in 2 allocs1.4 MiB in 68 allocs1.27 MiB in 77 allocs1.4 MiB in 68 allocs4.65 MiB in 50,287 allocs5.49 MiB in 3,546 allocsunsupportedunsupportedunsupported0.26× of yaml-v4 ▲ win
dumpflow-heavy-64k64 KiB89.5 KiB in 1 allocs23.5 MiB in 31,323 allocs25.6 MiB in 51,337 allocs15.7 MiB in 31,323 allocs19.4 MiB in 120,941 allocs9.92 MiB in 314,832 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
dumpanchors-32k32 KiB155 KiB in 1 allocs49.4 MiB in 66,674 allocs53 MiB in 100,522 allocsdiffers [19]differs [14]19.1 MiB in 600,171 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
dumpunicode-32k32 KiB27 KiB in 1 allocs1.59 MiB in 2,937 allocs1.74 MiB in 4,389 allocs1.1 MiB in 2,937 allocs1.62 MiB in 12,849 allocs1.57 MiB in 39,190 allocsunsupportedunsupportedunsupported0.02× of yaml-v2 ▲ win
dumpscalar-styles-32k32 KiB32.5 KiB in 1 allocs3.26 MiB in 7,344 allocs3.58 MiB in 10,002 allocs2.22 MiB in 7,344 allocs3.01 MiB in 24,494 allocs2.89 MiB in 89,385 allocsunsupportedunsupportedunsupported0.01× of yaml-v2 ▲ win
document parsecompose-wordpress815 B7.52 KiB in 21 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsegha-workflow9.43 KiB32.5 KiB in 26 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsehelm-ingress-nginx52.4 KiB87.6 KiB in 26 allocs485 KiB in 4,453 allocsdiffers [23]unsupportedunsupported1.64 MiB in 25,620 allocsunsupportedunsupportedunsupported0.18× of yaml-v3 ▲ win
document parsek8s-ingress-nginx-multi16 KiB62.6 KiB in 30 allocsdiffers [21]306 KiB in 5,819 allocsunsupportedunsupported1.06 MiB in 20,695 allocsunsupportedunsupportedunsupported0.20× of yaml-v4 ▲ win
document parseopenapi-api-with-examples6.75 KiB22.3 KiB in 34 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parseopenapi-petstore5.34 KiB21 KiB in 26 allocs87 KiB in 1,408 allocsdiffers [23]unsupportedunsupported351 KiB in 6,263 allocsunsupportedunsupportedunsupported0.24× of yaml-v3 ▲ win
document parseprometheus-config1.1 KiB7.09 KiB in 26 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsereference-a51 B1.93 KiB in 15 allocsdiffers [21]differs [23]unsupportedunsupported7.77 KiB in 192 allocsunsupportedunsupportedunsupported0.25× of goccy-go-yaml ▲ win
document parsereference-b51 B1.93 KiB in 15 allocsdiffers [21]differs [23]unsupportedunsupported7.77 KiB in 192 allocsunsupportedunsupportedunsupported0.25× of goccy-go-yaml ▲ win
document parserecords-4k4.14 KiB27.4 KiB in 21 allocs130 KiB in 2,547 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
document parserecords-64k64.2 KiB325 KiB in 21 allocs1.85 MiB in 38,754 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.17× of yaml-v3 ▲ win
document parserecords-1m1 MiB4.77 MiB in 21 allocs29.1 MiB in 612,225 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.16× of yaml-v3 ▲ win
document parserecords-8m8 MiB62.6 MiB in 24 allocs230 MiB in 4,840,410 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported0.27× of yaml-v3 ▲ win
document parsecompose-merge-2k2.14 KiB16.2 KiB in 24 allocsdiffers [21]61.6 KiB in 1,052 allocsunsupportedunsupported219 KiB in 4,339 allocsunsupportedunsupportedunsupported0.26× of yaml-v4 ▲ win
document parsecompose-merge-64k64.1 KiB333 KiB in 24 allocsdiffers [21]1.55 MiB in 28,692 allocsunsupportedunsupported6.99 MiB in 124,038 allocsunsupportedunsupportedunsupported0.21× of yaml-v4 ▲ win
document parsecompose-merge-1m1 MiB4.87 MiB in 24 allocsdiffers [21]24 MiB in 445,014 allocsunsupportedunsupported227 MiB in 1,926,643 allocsunsupportedunsupportedunsupported0.20× of yaml-v4 ▲ win
document parsek8s-multi-16k16.4 KiB90.3 KiB in 33 allocsdiffers [21]differs [23]unsupportedunsupported1.71 MiB in 33,922 allocsunsupportedunsupportedunsupported0.05× of goccy-go-yaml ▲ win
document parsek8s-multi-1m1 MiB5.11 MiB in 41 allocsdiffers [21]differs [23]unsupportedunsupported169 MiB in 2,080,261 allocsunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
document parseopenapi-100k101 KiB397 KiB in 29 allocs2.02 MiB in 39,624 allocsdiffers [23]unsupportedunsupported8.48 MiB in 147,519 allocsunsupportedunsupportedunsupported0.19× of yaml-v3 ▲ win
document parseopenapi-8m8 MiB70.2 MiB in 33 allocs162 MiB in 3,179,816 allocsdiffers [23]unsupportedunsupported1.5 GiB in 11,861,233 allocsunsupportedunsupportedunsupported0.43× of yaml-v3 ▲ win
document parsehelm-values-64k64 KiB237 KiB in 24 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsehelm-values-1m1 MiB3.4 MiB in 24 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
document parsedeep-block5.23 KiB20.6 KiB in 35 allocsdiffers [21]differs [23]unsupportedunsupported170 KiB in 2,453 allocsunsupportedunsupportedunsupported0.12× of goccy-go-yaml ▲ win
document parsedeep-flow202 B37.2 KiB in 51 allocs133 KiB in 263 allocsdiffers [23]unsupportedunsupported109 KiB in 1,743 allocsunsupportedunsupportedunsupported0.34× of goccy-go-yaml ▲ win
document parsewide-map-64k64 KiB341 KiB in 17 allocs1.87 MiB in 35,393 allocs1.87 MiB in 35,396 allocsunsupportedunsupported62.9 MiB in 139,723 allocsunsupportedunsupportedunsupported0.18× of yaml-v3 ▲ win
document parsewide-map-1m1 MiB4.85 MiB in 17 allocs28.3 MiB in 513,131 allocs28.3 MiB in 513,133 allocsunsupportedunsupported11.2 GiB in 2,025,750 allocsunsupportedunsupportedunsupported0.17× of yaml-v4 ▲ win
document parselong-scalars-256k261 KiB267 KiB in 16 allocsdiffers [21]differs [23]unsupportedunsupported9.92 MiB in 127,403 allocsunsupportedunsupportedunsupported0.03× of goccy-go-yaml ▲ win
document parseflow-heavy-64k64 KiB477 KiB in 24 allocs2.87 MiB in 53,733 allocs2.92 MiB in 56,997 allocsunsupportedunsupported14.1 MiB in 255,155 allocsunsupportedunsupportedunsupported0.16× of yaml-v3 ▲ win
document parseanchors-32k32 KiB215 KiB in 25 allocs1.02e+03 KiB in 17,019 allocsdiffers [23]unsupportedunsupported6.24 MiB in 122,349 allocsunsupportedunsupportedunsupported0.21× of yaml-v3 ▲ win
document parseunicode-32k32 KiB92.5 KiB in 17 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [4]unsupportedunsupportedunsupportedno rival
document parsescalar-styles-32k32 KiB125 KiB in 19 allocsdiffers [21]differs [23]unsupportedunsupported3.24 MiB in 63,472 allocsunsupportedunsupportedunsupported0.04× of goccy-go-yaml ▲ win
unchanged emitcompose-wordpress815 B0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitgha-workflow9.43 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emithelm-ingress-nginx52.4 KiB0 B in 0 allocs1.09 MiB in 1,455 allocsdiffers [23]unsupportedunsupported744 KiB in 5,484 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-ingress-nginx-multi16 KiB0 B in 0 allocsdiffers [21]1.47 MiB in 2,174 allocsunsupportedunsupported291 KiB in 4,198 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-api-with-examples6.75 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitopenapi-petstore5.34 KiB0 B in 0 allocs331 KiB in 470 allocsdiffers [23]unsupportedunsupported84.3 KiB in 843 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitprometheus-config1.1 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitreference-a51 B0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported641 B in 28 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitreference-b51 B0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported641 B in 28 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitrecords-4k4.14 KiB0 B in 0 allocs587 KiB in 1,079 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-64k64.2 KiB0 B in 0 allocs10.7 MiB in 16,254 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-1m1 MiB0 B in 0 allocs201 MiB in 258,474 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitrecords-8m8 MiB0 B in 0 allocs1.5 GiB in 2,044,451 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
unchanged emitcompose-merge-2k2.14 KiB0 B in 0 allocsdiffers [21]168 KiB in 421 allocsunsupportedunsupported28.5 KiB in 615 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitcompose-merge-64k64.1 KiB0 B in 0 allocsdiffers [21]10.6 MiB in 11,220 allocsunsupportedunsupported880 KiB in 17,471 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitcompose-merge-1m1 MiB0 B in 0 allocsdiffers [21]200 MiB in 173,701 allocsunsupportedunsupported14.3 MiB in 271,334 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-multi-16k16.4 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported263 KiB in 5,217 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitk8s-multi-1m1 MiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported15.8 MiB in 319,197 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-100k101 KiB0 B in 0 allocs13.8 MiB in 13,789 allocsdiffers [23]unsupportedunsupported1.78 MiB in 24,314 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitopenapi-8m8 MiB0 B in 0 allocs1.49 GiB in 1,104,293 allocsdiffers [23]unsupportedunsupported143 MiB in 1,952,872 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emithelm-values-64k64 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emithelm-values-1m1 MiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
unchanged emitdeep-block5.23 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported387 KiB in 406 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitdeep-flow202 B0 B in 0 allocs159 KiB in 30 allocsdiffers [23]unsupportedunsupported12.7 KiB in 203 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitwide-map-64k64 KiB0 B in 0 allocs8.16 MiB in 15,522 allocs8.16 MiB in 16,142 allocsunsupportedunsupported645 KiB in 11,813 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitwide-map-1m1 MiB0 B in 0 allocs161 MiB in 225,067 allocs161 MiB in 234,068 allocsunsupportedunsupported10.1 MiB in 171,066 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitlong-scalars-256k261 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported1.7 MiB in 41 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitflow-heavy-64k64 KiB0 B in 0 allocs23.1 MiB in 20,056 allocs23.1 MiB in 20,060 allocsunsupportedunsupported1.05 MiB in 31,539 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitanchors-32k32 KiB0 B in 0 allocs5.89 MiB in 6,161 allocsdiffers [23]unsupportedunsupported628 KiB in 21,041 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
unchanged emitunicode-32k32 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [4]unsupportedunsupportedunsupportedno rival
unchanged emitscalar-styles-32k32 KiB0 B in 0 allocsdiffers [21]differs [23]unsupportedunsupported584 KiB in 13,294 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptcompose-wordpress815 B9.26 KiB in 92 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptgha-workflow9.43 KiB8.88 KiB in 89 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scripthelm-ingress-nginx52.4 KiB1.94 KiB in 40 allocs1.12 MiB in 1,564 allocsdiffers [23]unsupportedunsupported729 KiB in 5,698 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptopenapi-api-with-examples6.75 KiB1.2 KiB in 22 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptopenapi-petstore5.34 KiB11.6 KiB in 104 allocs321 KiB in 455 allocsdiffers [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupported0.04× of yaml-v3 ▲ win
edit scriptprometheus-config1.1 KiB1.16 KiB in 20 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptreference-a51 B2.35 KiB in 27 allocsdiffers [21]differs [23]unsupportedunsupported4.64 KiB in 146 allocsunsupportedunsupportedunsupported0.51× of goccy-go-yaml ▲ win
edit scriptreference-b51 B2.36 KiB in 28 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [1]unsupportedunsupportedunsupportedno rival
edit scriptrecords-4k4.14 KiB4.35 KiB in 69 allocs609 KiB in 1,140 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
edit scriptrecords-64k64.2 KiB4.35 KiB in 69 allocs10.7 MiB in 16,311 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
edit scriptrecords-1m1 MiB4.35 KiB in 69 allocs201 MiB in 258,530 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
edit scriptrecords-8m8 MiB4.35 KiB in 69 allocs1.5 GiB in 2,044,508 allocsdiffers [23]unsupportedunsupporteddiffers [5]unsupportedunsupportedunsupported<0.01× of yaml-v3 ▲ win
edit scriptcompose-merge-2k2.14 KiB5.44 KiB in 63 allocsdiffers [21]179 KiB in 457 allocsunsupportedunsupported32.8 KiB in 729 allocsunsupportedunsupportedunsupported0.17× of goccy-go-yaml ▲ win
edit scriptcompose-merge-64k64.1 KiB13.8 KiB in 65 allocsdiffers [21]10.6 MiB in 11,256 allocsunsupportedunsupported876 KiB in 17,584 allocsunsupportedunsupportedunsupported0.02× of goccy-go-yaml ▲ win
edit scriptcompose-merge-1m1 MiB134 KiB in 65 allocsdiffers [21]200 MiB in 173,737 allocsunsupportedunsupported14.3 MiB in 271,445 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptopenapi-100k101 KiB10.1 KiB in 83 allocs13.8 MiB in 13,781 allocsdiffers [23]unsupportedunsupported1.78 MiB in 24,434 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptopenapi-8m8 MiB10.4 KiB in 84 allocs1.49 GiB in 1,104,287 allocsdiffers [23]unsupportedunsupported143 MiB in 1,953,003 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scripthelm-values-64k64 KiB1.61 KiB in 32 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scripthelm-values-1m1 MiB65.9 KiB in 34 allocsdiffers [21]differs [23]unsupportedunsupporteddiffers [2]unsupportedunsupportedunsupportedno rival
edit scriptwide-map-64k64 KiB4.7 KiB in 47 allocs8.03 MiB in 15,549 allocs8.04 MiB in 16,174 allocsunsupportedunsupported622 KiB in 11,862 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
edit scriptwide-map-1m1 MiB4.7 KiB in 47 allocs159 MiB in 225,094 allocs159 MiB in 234,099 allocsunsupportedunsupported10.1 MiB in 171,114 allocsunsupportedunsupportedunsupported<0.01× of goccy-go-yaml ▲ win
patch (RFC 6902)compose-wordpress815 B17.6 KiB in 121 allocs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]differs [11]116 KiB in 1,048 allocs †0.15× of json-patch † (text API, value-only) ▲ win
patch (RFC 6902)gha-workflow9.43 KiB54.3 KiB in 130 allocs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]differs [11]rejects [6]no rival
patch (RFC 6902)reference-a51 B4.33 KiB in 42 allocs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [9]10.1 KiB in 276 allocs †23 KiB in 204 allocs †0.43× of palantir-yamlpatch-goccy † (text API) ▲ win
patch (RFC 6902)reference-b51 B4.34 KiB in 43 allocs †unsupportedunsupportedunsupportedunsupportedunsupporteddiffers [8]differs [10]22.9 KiB in 204 allocs †0.19× of json-patch † (text API, value-only) ▲ win
patch (RFC 6902)records-4k4.14 KiB37.6 KiB in 91 allocs †unsupportedunsupportedunsupportedunsupportedunsupported775 KiB in 3,830 allocs †differs [12]differs [7]0.05× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-64k64.2 KiB402 KiB in 91 allocs †unsupportedunsupportedunsupportedunsupportedunsupported12.6 MiB in 55,213 allocs †differs [12]differs [7]0.03× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-1m1 MiB5.85 MiB in 91 allocs †unsupportedunsupportedunsupportedunsupportedunsupported230 MiB in 870,901 allocs †differs [12]differs [7]0.03× of palantir-yamlpatch † (text API) ▲ win
patch (RFC 6902)records-8m8 MiB71.1 MiB in 94 allocs †unsupportedunsupportedunsupportedunsupportedunsupported1.73 GiB in 6,885,062 allocs †differs [12]differs [7]0.04× of palantir-yamlpatch † (text API) ▲ win

Cells without a number, with what the correctness guard found:

  1. goccy-go-yaml (differs; edit-script ×1): Does not keep the block literal style of the edited value: the new text is written as a plain scalar. What the guard found, in edit-script on reference-b: byte 26: got 48 bytes "#abc 123\nb: this is a test2\nc: 13\n", expected 53 bytes "#abc 123\nb: |-\n this is a test2\nc: "; line 5: got "b: this is a test2", expected "b: |-"
  2. goccy-go-yaml (differs; document-parse ×6, unchanged-emit ×6, edit-script ×7): The AST prints its own spacing for flow collections and trailing comments, and blank lines, quoting or a leading --- marker change, so the text it writes back is not the input. What the guard found, in document-parse on compose-wordpress: does not write the input back: byte 807: got 807 bytes "\n db_data:\n", expected 815 bytes "\n db_data:\n\n \n "; the texts differ only in blank lines
  3. goccy-go-yaml (differs; dump ×4): 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 on records-4k: read back: at /14/address/zip: got 5509, expected "05509"
  4. goccy-go-yaml (differs; document-parse ×1, unchanged-emit ×1): Writes the escapes of a double-quoted scalar (\u00e9) as the characters themselves. What the guard found, in document-parse on unicode-32k: does not write the input back: byte 20: got 28160 bytes " café 0\n- \"é中文 0\"\n- \"😀 grin", expected 32800 bytes " café 0\n- \"\\u00e9\\u4e2d\\u6587 0\"\n- "; line 2: got "- \"é中文 0\"", expected "- \…
  5. goccy-go-yaml (differs; document-parse ×4, unchanged-emit ×4, edit-script ×4): Writes the null spelled ~ as null. What the guard found, in document-parse on records-4k: does not write the input back: byte 736: got 4275 bytes ".25\n note: null\n- id: 3\n name: Eps", expected 4242 bytes ".25\n note: ~\n- id: 3\n name: Epsilo"; line 47: got " note: null", expected…
  6. json-patch (rejects; patch ×1): Reads the document through sigs.k8s.io/yaml, a YAML 1.1 reader: the key on is the boolean true, so a path under /on is not found. What the guard found, in patch on gha-workflow: add operation does not apply: doc is missing path: "/on/push/branches/-": missin…
  7. json-patch (differs; patch ×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 patch on records-4k: value after the patch: at /1/score: got 812, expected 812 (float)
  8. palantir-yamlpatch (differs; patch ×1): Does not keep the block literal style of the edited value: the new text is written as a plain scalar. What the guard found, in patch on reference-b: byte 13: got 47 bytes "hello\na: 10\n#abc 123\nb: this is a te", expected 53 bytes "hello\na: 10\n\n#abc 123\nb: |-\n this i"; line 3: got "#abc 123", expected ""
  9. palantir-yamlpatch (differs; patch ×3): Patches through the yaml.v3 node tree, which keeps comments but not blank lines, spacing or a leading --- marker, so the text it writes back differs from the input. What the guard found, in patch on compose-wordpress: byte 852: got 852 bytes "\n db_data:\n", expected 860 bytes "\n db_data:\n\n \n "; the texts differ only in blank lines
  10. palantir-yamlpatch-goccy (differs; patch ×1): Does not keep the block literal style of the edited value: the new text is written as a plain scalar. What the guard found, in patch on reference-b: byte 26: got 48 bytes "#abc 123\nb: this is a test2\nc: 13\n", expected 53 bytes "#abc 123\nb: |-\n this is a test2\nc: "; line 5: got "b: this is a test2", expected "b: |-"
  11. palantir-yamlpatch-goccy (differs; patch ×2): Patches through the goccy AST, which prints its own spacing and changes blank lines, so the text it writes back differs from the input. What the guard found, in patch on compose-wordpress: byte 852: got 852 bytes "\n db_data:\n", expected 860 bytes "\n db_data:\n\n \n "; the texts differ only in blank lines
  12. palantir-yamlpatch-goccy (differs; patch ×4): Writes the null spelled ~ as null. What the guard found, in patch on records-4k: byte 752: got 4244 bytes ".25\n note: null\n- id: 3\n name: Eps", expected 4211 bytes ".25\n note: ~\n- id: 3\n name: Epsilo"; line 48: got " note: null", expected " note: ~"
  13. sigs-yaml (differs; typed-load ×1, generic-load ×1, dump ×1): A YAML 1.1 reader: the key on is the boolean true, so /on is not found. What the guard found, in typed-load on gha-workflow: /on/push/branches: 0 items, expected 2
  14. sigs-yaml (differs; dump ×1): A YAML 1.1 reader: the plain scalar y is the boolean true. What the guard found, in dump on anchors-32k: read back: at /base/b/1: got true, expected "y"
  15. sigs-yaml (differs; generic-load ×3): Reads one document of a multi-document stream, so the stream does not come back whole. What the guard found, in generic-load on k8s-ingress-nginx-multi: at /: got a mapping of 3, expected a sequence of 19
  16. sigs-yaml (differs; generic-load ×19): Reads through JSON, where every number is a float, so an integer comes back as a float. What the guard found, in generic-load on compose-wordpress: at /services/db/expose/0: got 3306 (float), expected 3306
  17. sigs-yaml (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 on records-4k: read back: at /1/score: got 812, expected 812 (float)
  18. yaml-v2 (differs; generic-load ×1, dump ×1): A YAML 1.1 reader: the key on is the boolean true, so /on is not found. What the guard found, in generic-load on gha-workflow: missing /on
  19. yaml-v2 (differs; generic-load ×1, dump ×1): A YAML 1.1 reader: the plain scalar y is the boolean true. What the guard found, in generic-load on anchors-32k: at /base/b/1: got true, expected "y"
  20. yaml-v2 (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 on records-4k: read back: at /1/score: got 812, expected 812 (float)
  21. yaml-v3 (differs; document-parse ×18, unchanged-emit ×18, edit-script ×11): The yaml.Node tree keeps comments but not blank lines, spacing or a leading --- marker, and it lays flow collections out its own way, so the text it writes back is not the input. What the guard found, in document-parse on compose-wordpress: does not write the input back: byte 807: got 807 bytes "\n db_data:\n", expected 815 bytes "\n db_data:\n\n \n "; the texts differ only in blank lines
  22. yaml-v3 (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 on records-4k: read back: at /1/score: got 812, expected 812 (float)
  23. yaml-v4 (differs; document-parse ×24, unchanged-emit ×24, edit-script ×16): The yaml.Node tree keeps comments but not blank lines, spacing or a leading --- marker, and it lays flow collections out its own way, so the text it writes back is not the input. What the guard found, in document-parse on compose-wordpress: does not write the input back: byte 303: got 783 bytes "olumes:\n - db_data:/var/lib/mysql", expected 815 bytes "olumes:\n - db_data:/var/lib/mys"; the texts differ only in blank lines and in…
  24. yaml-v4 (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 on records-4k: read back: at /1/score: got 812, expected 812 (float)

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.

Method: full run of 2026-10-16T21:48:45Z. Kit revision 0abba1d8b4f2. oneyaml-go eea67bb6b962; competitors yaml-v3 v3.0.5, yaml-v4 v4.0.0-rc.6, yaml-v2 v2.4.0, sigs-yaml v1.6.0, goccy-go-yaml v1.19.2, palantir-yamlpatch v1.5.0, palantir-yamlpatch-goccy v1.5.0, json-patch v5.9.11. Runtime go1.26.0 (target linux/amd64), measured with testing.B: ns/op from testing.Benchmark at benchtime 1s. Memory: B/op and allocs/op from testing.B (ReportAllocs). 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 2.67 before, 4.06 after, at most 11.23 during).