Skip to content

perf(avro): reuse write plumbing in writeDatum — attribution + fix for #119 - #120

Merged
kryptt merged 1 commit into
mainfrom
perf/avro-write-plumbing-119
Sep 29, 2026
Merged

kryptt merged 1 commit into
mainfrom
perf/avro-write-plumbing-119

Conversation

@kryptt

@kryptt kryptt commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

What

Addresses the allocation half of #119: the derived-Avro encode route allocated ~9–18% more than a hand-written direct-BinaryEncoder writer. Attribution (below) shows the time gap is tree build + GenericDatumWriter dispatch — kindlings'/avro's side — but most of the allocation gap was ours: AvroBinaryCursor.writeDatum allocated a fresh ByteArrayOutputStream (32-byte start, doubling), a fresh GenericDatumWriter, and a fresh BufferedBinaryEncoder (2 KB buffer) on every call.

This PR makes writeDatum write through a per-thread DatumWriters — reused buffer, re-bound BufferedBinaryEncoder, per-schema cached writers — the exact mirror of the read side's existing DatumReaders reader cache + binaryDecoderCache. Wire bytes are unchanged (the module's exact-bytes specs pin them).

Attribution (issue-shaped reduced fixture: 15 fields, 12-field all-Option nested, 18-branch union, 245 B output; hand-written route byte-identical to eo's)

Route ns/op B/op
kindlings encode(a) → Any (tree only) 532 664
write datum, fresh BAOS+writer+encoder (old writeDatum) 1,599 2,928
write datum, reused plumbing 1,311 392
full eo route (AvroCodec.encodeValue) pre-fix 1,670 3,456
hand-written stream (reporter's baseline) 761 397

After: full eo route 3,456 → 904 B/op (−74%); write-side cost is now exactly the returned array.

Commits / files

  • avro/.../AvroBinaryCursor.scala — DatumWriters + writeDatum delegation (all five write call sites funnel here).
  • avro/.../AvroWriteCorrectnessSpec.scala — new pins: retention under 200 same-thread writes, clean recovery after an aborted write, 8-thread isolation vs golden bytes.
  • benchmarks/.../AvroEncodeRouteBench.scala (+ MODULE_BENCHES mapping) — permanent four-route attribution bench, -prof gc.
  • docs/research/2026-09-29-issue-119-avro-encode-attribution.md — full write-up, incl. the answer to the streaming-encoder question and what remains on the kindlings side.

Verification

  • sbt test (root aggregate): all suites green, incl. avro 237/237.
  • JMH quick profile of the new bench (-prof gc): eo_encodeValue 568 B/op vs naive_freshPlumbing 2,624 B/op; handwritten_stream 240 B/op.
  • sbt avroIntegration/scalafmtCheck + python3 -m unittest discover .github/bench clean.

Remaining gap (tree + GenericDatumWriter dispatch) is the encode-side twin of #95: a derived A => Encoder => Unit streaming encoder lives in kindlings-avro-derivation (AvroEncoder is A => Any, so no eo-side shim can skip the datum). Tracked in the research note.

Open in Delta

…#119

Issue #119 measured the kindlings-derived AvroCodec encode route at
1.4-1.7x a hand-written direct-BinaryEncoder writer and 9-18% more
allocated. An attribution decomposition (docs/research note) shows the
time gap is tree build + GenericDatumWriter dispatch (kindlings' side),
but most of the ALLOCATION gap was ours: writeDatum allocated a fresh
ByteArrayOutputStream (32-byte start), GenericDatumWriter, and
BufferedBinaryEncoder on every call — 2,928 B/op of churn on a 245 B
record.

writeDatum now writes through a per-thread DatumWriters (reused BAOS +
re-bound BufferedBinaryEncoder + per-schema cached writers), mirroring
the read side's DatumReaders/binaryDecoderCache. Byte output is
unchanged; AvroWriteCorrectnessSpec pins retention under same-thread
churn, recovery after an aborted write, and 8-thread isolation.
AvroEncodeRouteBench (mapped into the bench CI) keeps the four routes
permanently comparable; measured write-side cost drops to just the
returned array (full route 3,456 -> 904 B/op).

Also checked and refuted, in the research note, the bundled claim that
generics lens[S] reorders multi-selector focus types — selector order
is pinned by type ascriptions against published 0.14.0 and 0.17.0.
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Cloudflare Pages preview for perf/avro-write-plumbing-119 is live:

https://1c8a1bd9.cats-eo-docs.pages.dev

Branch alias: https://perf-avro-write-plumbing-119.cats-eo-docs.pages.dev

Built from commit a9b9c2b8983b0b11cdb6caca0653570c5e7ceb61 · updated on every push.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark A/B

Allocation (B/op) — authoritative

Benchmark params base head Δ
OrderJsoniterBench.eoReadStreet size=512 72.2 128.2 +77.5%
AvroBytesBench.eoModifyCountry - 3,280.0 944.0 -71.2%
AvroBytesBench.eoModifyPartner - 3,360.0 1,000.0 -70.2%
AvroJsonBridgeBench.eoWideToAvro - 6,744.0 2,200.0 -67.4%
AvroJsonBridgeBench.eoClickToAvro - 9,400.0 4,696.0 -50.0%
OrderJsoniterBench.eoReadStreet size=64 128.0 72.0 -43.7%
CapsBench.foldMapDerivedPerCall - 0.0 0.0 +28.6%
TraversalBench.eoFoldNested size=8 424.0 328.0 -22.6%
GetterBench.mGet_3 - 0.0 0.0 +10.9%
OrderAvroBench.eoModifyNames size=64 14,096.2 12,560.1 -10.9%
SchemesBench.handHylo - 0.1 0.1 -7.2%
JsoniterBench.jMiss size=8 0.0 0.0 -6.1%
MultiFocusBench.eoModify_multiFocus size=4 1,368.0 1,320.0 -3.5%
PowerSeriesNestedBench.eoModify_nested size=4 2,192.0 2,264.0 +3.3%
AvroVulcanBench.rootGet_native - 600.0 616.0 +2.7%
JsoniterBench.jReplaceId size=8 936.0 960.0 +2.6%
OpticBuildBench.buildAndUse - 2,888.0 2,816.0 -2.5%
GetterBench.mGet_0 - 0.0 0.0 +1.9%
AffineFoldBench.eoGetOption_0 - 0.0 0.0 -1.9%
OrderCirceBench.eoNamesIor size=512 683,564.4 695,879.3 +1.8%
438 more benchmarks
Benchmark params base head Δ
CapsBench.getDeepDirect - 0.0 0.0 -1.6%
CapsBench.getCap - 0.0 0.0 +1.6%
GetterBench.eoGet_0 - 0.0 0.0 +1.6%
PowerSeriesNestedBench.eoModify_nested size=16 4,720.1 4,792.1 +1.5%
GenericsBench.handLensGet - 0.0 0.0 +1.5%
LensBench.eoGet - 0.0 0.0 +1.3%
AvroBytesBench.eoSliceGraftPayload - 1,192.0 1,176.0 -1.3%
OptionalBench.eoModify_loyalty_empty - 0.0 0.0 -1.2%
OrderCirceBench.eoNamesIor size=64 86,963.7 85,946.6 -1.2%
AffineFoldBench.mGetOption_6 - 0.0 0.0 -1.2%
OptionalBench.eoModify_0_empty - 0.0 0.0 -1.1%
AffineFoldBench.mGetOption_0 - 0.0 0.0 -0.9%
AffineFoldBench.mGetOption_loyalty - 0.0 0.0 +0.9%
AffineFoldBench.mGetOption_3 - 0.0 0.0 +0.9%
GetterBench.eoGet_6 - 0.0 0.0 -0.9%
OrderCirceBench.directStreet size=512 2,752.9 2,728.9 -0.9%
OrderCirceBench.directStreet size=8 2,752.0 2,728.0 -0.9%
FoldBench.mFoldMap size=8 0.0 0.0 +0.8%
PrismBench.eoGetRightAbsent - 0.0 0.0 +0.8%
MultiFocusBench.eoModify_multiFocus size=32 8,664.0 8,600.0 -0.7%
KyoDiBench.handMapGet - 0.0 0.0 -0.7%
AffineFoldBench.mGetOption_loyalty_empty - 0.0 0.0 +0.7%
CapsBench.getDerivedPerCall - 0.0 0.0 +0.6%
AffineFoldBench.eoGetOption_0_empty - 0.0 0.0 -0.6%
GenericsBench.handPrismModifyMiss - 0.0 0.0 -0.6%
GetterBench.mGet_6 - 0.0 0.0 -0.6%
ZioDiBench.eoServiceGet - 0.0 0.0 -0.6%
AffineFoldBench.mGetOption_0_empty - 0.0 0.0 +0.6%
JsoniterBench.jMiss size=512 0.1 0.1 +0.6%
PrismBench.mGetOptionAbsent - 0.0 0.0 -0.5%
GetterBench.eoGet_3 - 0.0 0.0 -0.5%
GenericsBench.genPrismGetMiss - 0.0 0.0 +0.5%
PowerSeriesNestedBench.eoModify_nested size=64 14,592.6 14,664.5 +0.5%
PrismBench.mGetRightAbsent - 0.0 0.0 -0.4%
SchemesBench.handCata - 0.1 0.1 -0.4%
FoldBench.eoFoldMap size=8 0.0 0.0 -0.4%
AffineFoldBench.eoGetOption_loyalty_empty - 0.0 0.0 +0.4%
GenericsBench.genPrismModifyMiss - 0.0 0.0 +0.4%
CapsBench.getDeepCap - 0.0 0.0 -0.3%
PowerSeriesPrismBench.monocle_sparse size=32 7,040.0 7,016.0 -0.3%
ClickRecordBench.encode_positional - 23,912.0 23,832.0 -0.3%
OptionalBench.mModify_loyalty_empty - 0.0 0.0 +0.3%
KyoDiBench.eoMapGet - 0.0 0.0 -0.3%
JsoniterBench.cReplaceId size=8 20,724.2 20,668.1 -0.3%
ZioDiBench.eoDrillGet - 0.0 0.0 +0.3%
CapsBench.foldMapCap - 0.0 0.0 +0.2%
AffineFoldBench.eoGetOption_0_asAffineFold - 0.0 0.0 +0.2%
MultiFocusCollectBench.eoCollectMap_constSum - 0.0 0.0 -0.2%
GenericsBench.genLensGet - 0.0 0.0 +0.2%
GetterBench.eoGet_orderId - 0.0 0.0 +0.2%
PowerSeriesNestedBench.eoModify_nested size=256 53,931.4 53,835.5 -0.2%
CapsBench.foldMapDirect - 0.0 0.0 -0.2%
OptionalBench.mModify_0_empty - 0.0 0.0 -0.1%
OrderJsoniterBench.nativeReadStreet size=512 456.0 455.3 -0.1%
AffineFoldBench.eoGetOption_loyalty - 0.0 0.0 +0.1%
CapsBench.getDirect - 0.0 0.0 +0.1%
GenericsBench.rawLensGet - 0.0 0.0 +0.1%
PrismBench.eoGetOptionAbsent - 0.0 0.0 -0.1%
LensBench.mGet - 0.0 0.0 -0.1%
OrderCirceBench.naiveNames size=8 17,840.1 17,824.1 -0.1%
MultiFocusBench.naive_sumQty size=4 0.0 0.0 -0.1%
CapsBench.foldMapDerivedHeld - 0.0 0.0 +0.1%
PrismBench.mGetOptionPresent - 0.0 0.0 -0.1%
OrderJsoniterBench.nativeSumPrices size=64 10,928.8 10,936.4 +0.1%
CapsBench.getDerivedHeld - 0.0 0.0 -0.1%
GetterBench.mGet_orderId - 0.0 0.0 -0.1%
JsoniterBench.jReplaceId size=512 41,913.0 41,889.0 -0.1%
OrderJsoniterBench.monocleSumPrices size=64 47,391.0 47,369.7 -0.0%
OrderCirceBench.eoStreet size=512 2,720.9 2,721.8 +0.0%
PowerSeriesNestedBench.eoModify_nested size=1024 210,702.3 210,634.2 -0.0%
GenericsBench.handPrismGetMiss - 0.0 0.0 -0.0%
PowerSeriesNestedBench.monocle_nested size=64 58,913.0 58,896.9 -0.0%
OrderCirceBench.eoStreetIor size=512 2,737.6 2,736.9 -0.0%
PrismBench.eoGetOptionPresent - 0.0 0.0 -0.0%
JsoniterBench.jMiss size=64 0.0 0.0 -0.0%
OrderCirceBench.naiveNames size=64 120,838.4 120,854.2 +0.0%
OrderCirceBench.monocleNames size=64 132,778.7 132,762.7 -0.0%
OrderCirceBench.hcursorNames size=64 77,810.3 77,818.7 +0.0%
OrderJsoniterBench.nativeSumPrices size=8 1,512.6 1,512.5 -0.0%
OrderCirceBench.eoStreetIor size=64 2,736.9 2,737.0 +0.0%
PowerSeriesBench.monocle_powerEach size=4096 967,900.5 967,855.8 -0.0%
PowerSeriesBench.monocle_powerEach size=4 1,176.0 1,176.1 +0.0%
OrderJsoniterBench.nativeSumPrices size=512 86,400.5 86,397.8 -0.0%
JsoniterBench.cModifyId size=512 1,066,759.3 1,066,784.2 +0.0%
PlatedBench.mUniverseExpr n=4096 4,687,608.0 4,687,699.1 +0.0%
OrderCirceBench.monocleNames size=512 1,121,839.6 1,121,819.2 -0.0%
PowerSeriesPrismBench.monocle_sparse size=8 1,952.0 1,952.0 +0.0%
OrderCirceBench.directNames size=512 614,001.4 614,010.0 +0.0%
OrderJsoniterBench.naiveReadStreet size=512 193,233.8 193,231.4 -0.0%
JsoniterBench.jReadStreet size=512 128.1 128.1 -0.0%
OrderJsoniterBench.naiveModifyStreet size=512 333,575.3 333,571.2 -0.0%
OrderJsoniterBench.nativeReadStreet size=64 424.5 424.5 +0.0%
PowerSeriesBench.naive_powerEach size=4096 114,775.0 114,773.7 -0.0%
OrderAvroBench.monocleModifyStreet size=512 169,066.4 169,068.2 +0.0%
JsoniterBench.cSumPrices size=8 22,704.3 22,704.5 +0.0%
PowerSeriesPrismBench.naive_sparse size=2048 24,612.8 24,613.0 +0.0%
OrderAvroBench.naiveModifyStreet size=512 169,058.3 169,056.7 -0.0%
PlatedBench.eoUniverseDeep n=4096 786,576.0 786,582.6 +0.0%
OrderCirceBench.hcursorStreet size=512 3,032.9 3,032.9 +0.0%
OrderJsoniterBench.eoSumPrices size=64 8,121.3 8,121.2 -0.0%
JsoniterBench.jSumPrices size=512 63,632.5 63,632.9 +0.0%
JsoniterBench.cReadStreet size=512 797,935.8 797,931.1 -0.0%
PowerSeriesBench.eoModify_powerEach size=4096 164,377.7 164,376.7 -0.0%
JsoniterBench.cModifyId size=8 20,716.1 20,716.2 +0.0%
OrderCirceBench.naiveStreet size=64 113,790.6 113,791.2 +0.0%
OrderJsoniterBench.monocleReadStreet size=512 193,232.5 193,233.4 +0.0%
PlatedBench.visitorUniverseJson n=4096 524,400.8 524,403.3 +0.0%
JsoniterBench.cSumPrices size=512 1,240,814.3 1,240,808.4 -0.0%
OrderCirceBench.eoNames size=512 614,038.3 614,041.2 +0.0%
OrderCirceBench.naiveStreet size=512 908,041.4 908,037.3 -0.0%
JsoniterBench.cModifyId size=64 136,265.7 136,266.2 +0.0%
JsoniterBench.cSumPrices size=64 156,251.5 156,252.2 +0.0%
PlatedBench.mUniverseExpr n=512 475,009.3 475,011.2 +0.0%
PowerSeriesPrismBench.monocle_sparse size=512 166,692.9 166,693.6 +0.0%
PowerSeriesNestedBench.monocle_nested size=256 430,200.5 430,202.2 +0.0%
PowerSeriesNestedBench.monocle_nested size=1024 1,118,854.8 1,118,850.7 -0.0%
MultiFocusBench.eoModify_multiFocus size=1024 331,084.1 331,085.3 +0.0%
PlatedBench.visitorUniverseDeep n=4096 196,706.8 196,706.2 -0.0%
OrderCirceBench.monocleStreet size=512 908,042.9 908,040.0 -0.0%
OrderJsoniterBench.nativeReadStreet size=8 424.0 424.0 +0.0%
OrderAvroBench.naiveReadStreet size=512 69,801.8 69,802.0 +0.0%
OrderCirceBench.directStreet size=64 2,728.1 2,728.1 -0.0%
PlatedBench.visitorTransformDeep n=4096 163,886.5 163,886.9 +0.0%
OrderCirceBench.eoStreet size=64 2,720.1 2,720.1 -0.0%
OrderAvroBench.eoModifyNames size=512 97,404.1 97,403.9 -0.0%
OrderJsoniterBench.eoSumPrices size=512 63,693.9 63,693.8 -0.0%
TraversalBench.mFoldPrices size=512 162,581.0 162,581.4 +0.0%
PlatedBench.mUniverseJson n=4096 6,489,885.4 6,489,899.7 +0.0%
OrderJsoniterBench.monocleModifyStreet size=512 333,570.4 333,569.7 -0.0%
JsoniterBench.cReplaceId size=512 1,066,735.8 1,066,738.0 +0.0%
JsoniterBench.jReadId size=64 48.0 48.0 +0.0%
OrderAvroBench.monocleReadStreet size=512 69,802.1 69,801.9 -0.0%
OrderJsoniterBench.monocleSumPrices size=512 1,190,788.1 1,190,785.7 -0.0%
TraversalBench.mModify size=512 176,920.7 176,921.0 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=2048 104,684.4 104,684.2 -0.0%
JsoniterBench.cReplaceId size=64 136,217.5 136,217.8 +0.0%
PowerSeriesBench.eoModify_powerEach size=1024 41,414.0 41,414.1 +0.0%
OrderCirceBench.naiveNames size=512 965,281.5 965,279.8 -0.0%
JsoniterBench.cReadId size=64 101,309.1 101,309.3 +0.0%
OrderCirceBench.hcursorNames size=512 614,020.0 614,019.0 -0.0%
PowerSeriesBench.monocle_powerEach size=256 107,337.9 107,337.7 -0.0%
PlatedBench.eoUniverseJson n=4096 786,482.7 786,481.5 -0.0%
OrderAvroBench.eoModifyStreet size=64 328.0 328.0 +0.0%
OrderCirceBench.directNames size=64 77,729.6 77,729.7 +0.0%
PlatedBench.eoTransformExpr n=4096 655,358.8 655,359.7 +0.0%
OrderCirceBench.hcursorStreet size=64 3,032.1 3,032.1 +0.0%
OrderAvroBench.monocleModifyNames size=64 39,867.3 39,867.3 -0.0%
PowerSeriesNestedBench.naive_nested size=1024 115,068.9 115,068.7 -0.0%
PlatedBench.mTransformExpr n=4096 753,738.7 753,739.5 +0.0%
TraversalBench.eoFoldNested size=512 20,200.8 20,200.8 +0.0%
JsoniterBench.cReadStreet size=64 101,309.3 101,309.2 -0.0%
MultiFocusBench.naive_sumQty size=256 3,840.1 3,840.1 -0.0%
OrderJsoniterBench.eoModifyStreet size=512 42,027.7 42,027.7 -0.0%
OrderJsoniterBench.naiveModifyStreet size=64 30,058.0 30,058.0 -0.0%
JsoniterBench.jReadStreet size=64 128.0 128.0 -0.0%
OrderAvroBench.monocleModifyNames size=512 382,759.7 382,759.3 -0.0%
MultiFocusBench.naive_sumQty size=1024 16,129.1 16,129.1 -0.0%
OrderJsoniterBench.naiveSumPrices size=64 29,337.3 29,337.3 +0.0%
OrderAvroBench.eoModifyStreet size=512 328.0 328.0 +0.0%
OrderJsoniterBench.monocleModifyStreet size=64 30,081.9 30,081.9 +0.0%
JsoniterBench.cReadId size=512 797,940.4 797,939.8 -0.0%
OrderCirceBench.eoNames size=64 79,299.4 79,299.4 +0.0%
OrderJsoniterBench.monocleReadStreet size=64 24,705.2 24,705.2 -0.0%
OrderJsoniterBench.naiveReadStreet size=64 24,705.2 24,705.2 +0.0%
PlatedBench.mUniverseJson n=512 699,917.5 699,918.1 +0.0%
PowerSeriesPrismBench.naive_sparse size=512 6,176.3 6,176.3 -0.0%
MultiFocusCollectBench.naive_listSum - 56.0 56.0 +0.0%
AvroBytesBench.naiveReadPartner - 5,424.0 5,424.0 +0.0%
PowerSeriesBench.eoModify_powerEach size=64 3,008.0 3,008.0 -0.0%
KyoDiBench.handMapDrillModify - 216.0 216.0 +0.0%
JsoniterBench.jReadId size=8 48.0 48.0 +0.0%
OrderJsoniterBench.eoSumPrices size=8 1,176.0 1,176.0 +0.0%
PowerSeriesBench.naive_powerEach size=256 7,224.3 7,224.3 +0.0%
PlatedBench.visitorUniverseExpr n=4096 196,654.9 196,654.8 -0.0%
PowerSeriesBench.naive_powerEach size=1024 28,730.4 28,730.5 +0.0%
OrderCirceBench.monocleStreet size=64 113,799.0 113,799.1 +0.0%
PlatedBench.visitorTransformExpr n=4096 360,471.1 360,471.0 -0.0%
JsoniterBench.jSumPrices size=64 8,120.3 8,120.3 -0.0%
OrderCirceBench.hcursorNames size=8 10,768.1 10,768.1 +0.0%
OrderJsoniterBench.naiveModifyStreet size=8 4,640.1 4,640.1 +0.0%
PlatedBench.visitorUniverseJson n=512 40,954.2 40,954.2 +0.0%
JsoniterBench.jReadStreet size=8 128.0 128.0 -0.0%
PowerSeriesBench.eoModify_powerEach size=256 10,688.5 10,688.5 -0.0%
OrderAvroBench.monocleModifyStreet size=64 20,904.3 20,904.2 -0.0%
PowerSeriesPrismBench.monocle_sparse size=2048 523,144.3 523,144.4 +0.0%
OrderAvroBench.eoReadStreet size=512 88.0 88.0 +0.0%
ClickRecordBench.encode_derivedThroughPrism - 744.0 744.0 -0.0%
PlatedBench.eoTransformDeep n=64 7,184.0 7,184.0 +0.0%
PlatedBench.eoUniverseExpr n=64 12,168.0 12,168.0 +0.0%
PlatedBench.eoUniverseJson n=64 12,168.1 12,168.1 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=32 1,360.0 1,360.0 +0.0%
PlatedBench.eoTransformExpr n=64 10,144.0 10,144.0 -0.0%
PowerSeriesBench.monocle_powerEach size=1024 279,426.6 279,426.5 -0.0%
AvroVulcanBench.decode_native - 48.0 48.0 +0.0%
OrderCirceBench.eoNames size=8 10,944.1 10,944.1 +0.0%
OrderCirceBench.eoStreet size=8 2,720.0 2,720.0 -0.0%
OrderAvroBench.naiveModifyNames size=512 226,283.3 226,283.2 -0.0%
TraversalBench.eoModify size=512 36,897.2 36,897.2 -0.0%
OptionalBench.eoModify_3 - 160.0 160.0 -0.0%
MultiFocusBench.naive_listMap size=1024 65,578.1 65,578.1 +0.0%
FoldBench.eoFoldPrices size=512 12,312.4 12,312.5 +0.0%
TraversalBench.eoFoldPrices size=512 12,312.4 12,312.4 -0.0%
PlatedBench.visitorUniverseDeep n=64 3,128.0 3,128.0 -0.0%
AvroBytesBench.eoReadPartner - 480.0 480.0 -0.0%
OrderJsoniterBench.eoModifyStreet size=8 1,072.0 1,072.0 -0.0%
FoldBench.mFoldMap size=512 14,080.6 14,080.6 -0.0%
AvroBytesBench.naiveReadCountry - 4,256.0 4,256.0 -0.0%
KyoDiBench.handVarUpdate - 184.0 184.0 +0.0%
FoldBench.mFoldPrices size=512 12,312.5 12,312.5 -0.0%
AvroJsonBridgeBench.naiveWideToJson - 4,376.0 4,376.0 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=512 24,785.5 24,785.5 +0.0%
JsoniterBench.jSumPrices size=8 1,176.0 1,176.0 +0.0%
PowerSeriesPrismBench.naive_sparse size=32 416.0 416.0 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=128 4,816.1 4,816.1 +0.0%
OrderAvroBench.naiveModifyStreet size=64 20,880.2 20,880.2 +0.0%
TraversalBench.mFoldPrices size=8 2,016.0 2,016.0 +0.0%
OrderJsoniterBench.eoReadStreet size=8 128.0 128.0 +0.0%
OrderJsoniterBench.naiveReadStreet size=8 3,648.0 3,648.0 +0.0%
AvroJsonBridgeBench.eoWideToJson - 1,472.0 1,472.0 -0.0%
AvroVulcanBench.rootGet_bridged - 1,472.0 1,472.0 -0.0%
MultiFocusBench.eoModify_powerEach size=256 26,080.6 26,080.6 -0.0%
PlatedBench.eoUniverseExpr n=512 98,185.5 98,185.5 -0.0%
OrderAvroBench.monocleReadStreet size=8 1,208.0 1,208.0 +0.0%
OrderCirceBench.directNames size=8 10,688.1 10,688.1 -0.0%
PlatedBench.visitorTransformDeep n=512 20,496.5 20,496.5 +0.0%
MultiFocusBench.naive_listMap size=256 16,424.1 16,424.1 -0.0%
KyoDiBench.eoEnvFocus - 312.0 312.0 -0.0%
PowerSeriesNestedBench.naive_nested size=64 7,512.2 7,512.2 +0.0%
PowerSeriesNestedBench.naive_nested size=256 29,019.3 29,019.3 -0.0%
PlatedBench.eoUniverseExpr n=4096 786,384.1 786,384.0 -0.0%
OrderAvroBench.naiveReadStreet size=64 8,848.2 8,848.2 -0.0%
AvroBytesBench.prunedReadCountry - 1,976.0 1,976.0 -0.0%
JsoniterBench.jModifyId size=512 41,921.0 41,921.0 -0.0%
OrderJsoniterBench.monocleSumPrices size=8 6,640.1 6,640.1 -0.0%
FoldBench.eoFoldMap size=512 14,080.6 14,080.7 +0.0%
FoldBench.mFoldPrices size=64 1,560.0 1,560.0 +0.0%
OrderJsoniterBench.eoModifyStreet size=64 5,432.1 5,432.1 -0.0%
OrderJsoniterBench.naiveSumPrices size=8 4,248.0 4,248.0 -0.0%
AvroBytesBench.eoGraftPayload - 720.0 720.0 -0.0%
JsoniterBench.jModifyId size=8 968.0 968.0 -0.0%
OrderJsoniterBench.monocleModifyStreet size=8 4,664.1 4,664.1 +0.0%
AvroBytesBench.prunedReadPartner - 1,592.0 1,592.0 +0.0%
MultiFocusBench.eoModify_powerEach size=1024 115,177.1 115,177.1 -0.0%
PowerSeriesBench.monocle_powerEach size=64 14,520.1 14,520.1 +0.0%
PowerSeriesNestedBench.monocle_nested size=4 5,568.0 5,568.0 -0.0%
PowerSeriesPrismBench.monocle_sparse size=128 27,808.2 27,808.2 -0.0%
PowerSeriesBench.eoModify_powerEach size=4 608.0 608.0 +0.0%
OrderCirceBench.naiveStreet size=8 17,040.1 17,040.1 +0.0%
OrderJsoniterBench.monocleReadStreet size=8 3,648.0 3,648.0 -0.0%
SetterBench.eoModify_6 - 120.0 120.0 +0.0%
OrderCirceBench.hcursorStreet size=8 3,032.0 3,032.0 +0.0%
PlatedBench.mUniverseExpr n=64 45,424.3 45,424.3 -0.0%
ClickRecordBench.encode_derived - 744.0 744.0 +0.0%
JsoniterBench.jModifyId size=64 5,328.0 5,328.0 -0.0%
OpticBuildBench.reuseUse - 2,720.0 2,720.0 -0.0%
PlatedBench.eoTransformDeep n=512 57,361.2 57,361.2 +0.0%
TraversalBench.mModify size=8 1,936.0 1,936.0 +0.0%
PlatedBench.visitorUniverseJson n=64 5,096.0 5,096.0 -0.0%
OrderAvroBench.naiveModifyStreet size=8 2,968.0 2,968.0 +0.0%
AvroBytesBench.naiveModifyCountry - 7,616.0 7,616.0 -0.0%
MultiFocusBench.eoModify_multiFocus size=256 76,112.6 76,112.6 +0.0%
AffineFoldBench.eoGetOption_6 - 16.0 16.0 +0.0%
OrderJsoniterBench.naiveSumPrices size=512 230,123.5 230,123.5 +0.0%
AvroBytesBench.naiveModifyPartner - 8,696.0 8,696.0 +0.0%
AvroJsonBridgeBench.naiveClickToAvro - 3,928.0 3,928.0 -0.0%
PlatedBench.visitorUniverseExpr n=64 3,080.0 3,080.0 +0.0%
PowerSeriesBench.eoModify_powerEach size=16 1,088.0 1,088.0 +0.0%
MultiFocusBench.eoFold_powerEach size=256 9,240.2 9,240.2 +0.0%
JsoniterBench.cReadId size=8 15,568.0 15,568.0 +0.0%
AvroJsonBridgeBench.eoClickToJson - 4,000.0 4,000.0 -0.0%
PlatedBench.visitorUniverseExpr n=512 24,584.7 24,584.7 +0.0%
PrismBench.mRightReverseGet - 16.0 16.0 -0.0%
CapsBench.modifyDerivedHeld - 40.0 40.0 +0.0%
FoldBench.mFoldMap size=64 768.0 768.0 +0.0%
TraversalBench.mFoldPrices size=64 15,424.1 15,424.1 -0.0%
AvroDecodeReuseBench.confluentRecordReader - 1,560.0 1,560.0 -0.0%
OrderCirceBench.monocleNames size=8 19,456.1 19,456.1 -0.0%
OptionalBench.mModify_6 - 496.0 496.0 -0.0%
ClickRecordBench.encode_hand - 768.0 768.0 +0.0%
AvroVulcanBench.encode_vulcanRaw - 1,224.0 1,224.0 -0.0%
PowerSeriesBench.monocle_powerEach size=16 3,736.0 3,736.0 +0.0%
OrderAvroBench.monocleReadStreet size=64 8,848.2 8,848.2 +0.0%
SchemesBench.eoHylo - 295,848.6 295,848.6 -0.0%
OptionalBench.mModify_3 - 304.0 304.0 +0.0%
AvroBytesBench.eoReadCountry - 520.0 520.0 +0.0%
OrderCirceBench.eoNamesIor size=8 11,592.1 11,592.1 +0.0%
OrderAvroBench.naiveModifyNames size=8 3,752.0 3,752.0 +0.0%
CapsBench.modifyDeepCap - 176.0 176.0 +0.0%
PlatedBench.eoTransformDeep n=4096 624,385.1 624,385.1 +0.0%
OrderAvroBench.eoReadStreet size=64 88.0 88.0 -0.0%
SchemesBench.eoCata - 197,568.6 197,568.6 -0.0%
MultiFocusBench.eoModify_powerEach size=4 800.0 800.0 +0.0%
AvroDecodeReuseBench.freshDecodeRecord - 3,344.0 3,344.0 -0.0%
PowerSeriesNestedBench.monocle_nested size=16 15,776.1 15,776.1 -0.0%
PlatedBench.mUniverseJson n=64 73,208.4 73,208.4 -0.0%
ClickRecordBench.encode_vulcanFull - 28,408.1 28,408.1 +0.0%
TraversalBench.eoFoldPrices size=64 1,560.0 1,560.0 +0.0%
OrderAvroBench.eoReadStreet size=8 88.0 88.0 +0.0%
AvroVulcanBench.decode_vulcanRaw - 880.0 880.0 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=8 496.0 496.0 +0.0%
PlatedBench.eoUniverseDeep n=64 12,360.0 12,360.0 +0.0%
OrderCirceBench.monocleStreet size=8 17,048.1 17,048.1 +0.0%
OrderAvroBench.eoModifyNames size=8 1,992.0 1,992.0 -0.0%
OrderAvroBench.naiveModifyNames size=64 27,936.3 27,936.3 -0.0%
AvroJsonBridgeBench.naiveClickToJson - 5,856.0 5,856.0 -0.0%
JsoniterBench.jReplaceId size=64 5,296.0 5,296.0 +0.0%
KyoDiBench.eoMapDrillModify - 216.0 216.0 +0.0%
OptionalBench.eoModify_6 - 208.0 208.0 -0.0%
SchemesBench.handAna - 163,816.1 163,816.1 +0.0%
PlatedBench.eoTransformExpr n=512 81,825.7 81,825.7 -0.0%
AvroDecodeReuseBench.confluentRecordReaderFresh - 3,696.0 3,696.0 +0.0%
ZioDiBench.eoDrillModify - 528.0 528.0 +0.0%
MultiFocusCollectBench.eoCollectMap_zipMean - 880.0 880.0 +0.0%
JsoniterBench.cReadStreet size=8 15,568.0 15,568.0 -0.0%
PlatedBench.visitorUniverseDeep n=512 24,632.8 24,632.8 -0.0%
TraversalBench.eoModify size=8 608.0 608.0 +0.0%
GenericsBench.rawLensModify - 24.0 24.0 -0.0%
KyoDiBench.handEnvUse - 304.0 304.0 +0.0%
MultiFocusCollectBench.naive_tuple6Rewrite - 184.0 184.0 -0.0%
TraversalBench.mModify size=64 14,448.0 14,448.0 +0.0%
AvroDecodeReuseBench.cachedDecodeRecord - 1,224.0 1,224.0 -0.0%
FoldBench.eoFoldPrices size=64 1,560.0 1,560.0 -0.0%
GenericsBench.rawPrismModifyHit - 24.0 24.0 +0.0%
AvroBytesBench.naivePassthroughPayload - 14,088.1 14,088.1 -0.0%
OrderAvroBench.monocleModifyStreet size=8 2,992.0 2,992.0 -0.0%
TraversalBench.eoModify size=64 4,640.0 4,640.0 -0.0%
CompositionBench.buildLens6 - 352.0 352.0 -0.0%
FoldBench.eoFoldMap size=64 768.0 768.0 +0.0%
CompositionBench.buildLens3 - 184.0 184.0 -0.0%
ZioDiBench.handServiceReplace - 576.0 576.0 +0.0%
MultiFocusCollectBench.eoCollectList_listSum - 56.0 56.0 -0.0%
PlatedBench.eoUniverseJson n=512 98,186.9 98,186.9 +0.0%
MultiFocusBench.eoModify_powerEach size=32 3,152.0 3,152.0 -0.0%
OptionalBench.mReplace_loyalty - 88.0 88.0 +0.0%
OptionalBench.eoReplace_loyalty - 88.0 88.0 +0.0%
PlatedBench.eoUniverseDeep n=512 98,377.5 98,377.5 +0.0%
PowerSeriesPrismBench.naive_sparse size=128 1,568.0 1,568.0 -0.0%
AvroVulcanBench.fieldGet_native - 432.0 432.0 +0.0%
OrderAvroBench.monocleModifyNames size=8 5,400.0 5,400.0 -0.0%
MultiFocusCollectBench.naive_tuple3Rewrite - 96.0 96.0 -0.0%
IsoBench.mReverseGet - 32.0 32.0 -0.0%
GenericsBench.rawPrismGetHit - 16.0 16.0 -0.0%
IsoBench.eoReverseGet - 32.0 32.0 -0.0%
PowerSeriesNestedBench.naive_nested size=4 792.0 792.0 +0.0%
MultiFocusBench.naive_listMap size=32 2,088.0 2,088.0 -0.0%
PrismBench.mReverseGet - 16.0 16.0 +0.0%
AvroVulcanBench.encode_native - 56.0 56.0 -0.0%
PlatedBench.mTransformExpr n=512 69,585.6 69,585.6 -0.0%
OrderCirceBench.eoStreetIor size=8 2,736.0 2,736.0 -0.0%
PowerSeriesBench.naive_powerEach size=16 504.0 504.0 -0.0%
MultiFocusBench.eoFold_powerEach size=4 328.0 328.0 -0.0%
LensBench.mReplace - 40.0 40.0 +0.0%
AvroJsonBridgeBench.naiveWideToAvro - 3,504.0 3,504.0 -0.0%
CompositionBench.reuseLens6 - 120.0 120.0 -0.0%
AvroVulcanBench.fieldGet_bridged - 432.0 432.0 -0.0%
FoldBench.eoFoldPrices size=8 216.0 216.0 -0.0%
PlatedBench.visitorTransformDeep n=64 2,576.0 2,576.0 +0.0%
JsoniterBench.jReadId size=512 48.0 48.0 -0.0%
CompositionBench.buildLensOptional3 - 184.0 184.0 -0.0%
PrismBench.mGetRightPresent - 16.0 16.0 +0.0%
PrismBench.eoRightReverseGet - 16.0 16.0 +0.0%
SchemesBench.drosteAna - 327,632.3 327,632.3 -0.0%
SetterBench.eoModify_3 - 72.0 72.0 +0.0%
SetterBench.mModify_6 - 288.0 288.0 +0.0%
SetterBench.mModify_0 - 24.0 24.0 +0.0%
AvroVulcanBench.encode_bridged - 1,208.0 1,208.0 -0.0%
CapsBench.modifyDirect - 40.0 40.0 -0.0%
OptionalBench.eoModify_loyalty - 112.0 112.0 -0.0%
MultiFocusCollectBench.naive_constSum - 16.0 16.0 -0.0%
ZioDiBench.handDrillModify - 648.0 648.0 -0.0%
MultiFocusCollectBench.naive_zipMeanBroadcast - 1,176.0 1,176.0 -0.0%
PowerSeriesNestedBench.naive_nested size=16 2,136.0 2,136.0 +0.0%
PowerSeriesBench.naive_powerEach size=4 168.0 168.0 -0.0%
TraversalBench.eoFoldNested size=64 2,680.0 2,680.0 +0.0%
OptionalBench.mReplace_0 - 40.0 40.0 -0.0%
MultiFocusCollectBench.eoModify_multiFocusTuple3 - 128.0 128.0 -0.0%
AffineFoldBench.eoGetOption_3 - 16.0 16.0 +0.0%
CompositionBench.reuseLensOptional3 - 160.0 160.0 +0.0%
LensBench.eoModify - 40.0 40.0 +0.0%
SetterBench.eoModify_0 - 24.0 24.0 -0.0%
PlatedBench.visitorTransformExpr n=512 45,032.8 45,032.8 +0.0%
CompositionBench.reuseLens1 - 40.0 40.0 +0.0%
PrismBench.eoGetRightPresent - 16.0 16.0 -0.0%
ZioDiBench.handServiceGet - 120.0 120.0 -0.0%
GenericsBench.handPrismModifyHit - 24.0 24.0 +0.0%
PlatedBench.mTransformExpr n=64 11,728.1 11,728.1 -0.0%
TraversalBench.eoFoldPrices size=8 216.0 216.0 -0.0%
MultiFocusCollectBench.eoModify_multiFocusTuple6 - 224.0 224.0 -0.0%
OptionalBench.eoReplace_0 - 40.0 40.0 -0.0%
GenericsBench.genPrismGetHit - 16.0 16.0 -0.0%
ReviewBench.eoReverseGet_6 - 120.0 120.0 -0.0%
ReviewBench.naiveBuild_0 - 24.0 24.0 -0.0%
GenericsBench.genPrismModifyHit - 24.0 24.0 +0.0%
IsoBench.mGet - 32.0 32.0 -0.0%
PlatedBench.visitorTransformExpr n=64 5,608.0 5,608.0 +0.0%
ReviewBench.naiveBuild_6 - 120.0 120.0 -0.0%
OpticBuildBench.build - 184.0 184.0 +0.0%
OptionalBench.eoModify_0 - 112.0 112.0 +0.0%
OptionalBench.mModify_loyalty - 112.0 112.0 -0.0%
CompositionBench.reuseLeaf - 24.0 24.0 -0.0%
OrderAvroBench.naiveReadStreet size=8 1,208.0 1,208.0 -0.0%
CapsBench.modifyDerivedPerCall - 40.0 40.0 -0.0%
KyoDiBench.eoVarUpdateFocus - 200.0 200.0 -0.0%
SchemesBench.eoAna - 589,712.7 589,712.7 +0.0%
LensBench.mModify - 40.0 40.0 +0.0%
PrismBench.eoReverseGet - 16.0 16.0 +0.0%
SchemesBench.drosteHylo - 328,640.5 328,640.5 -0.0%
ZioDiBench.handDrillGet - 120.0 120.0 -0.0%
GenericsBench.genLensModify - 24.0 24.0 -0.0%
CapsBench.modifyDeepDirect - 152.0 152.0 -0.0%
CompositionBench.buildLens1 - 72.0 72.0 -0.0%
SetterBench.eoModify_orderId - 40.0 40.0 +0.0%
LensBench.eoReplace - 40.0 40.0 +0.0%
OrderAvroBench.eoModifyStreet size=8 328.0 328.0 +0.0%
SchemesBench.drosteCata - 164,824.3 164,824.3 +0.0%
ReviewBench.eoReverseGet_3 - 72.0 72.0 +0.0%
OptionalBench.mModify_0 - 112.0 112.0 -0.0%
SetterBench.mModify_orderId - 40.0 40.0 -0.0%
LensBench.mModifyDeep - 176.0 176.0 -0.0%
AvroVulcanBench.decode_bridged - 880.0 880.0 -0.0%
GenericsBench.handPrismGetHit - 16.0 16.0 -0.0%
ReviewBench.eoReverseGet_0 - 24.0 24.0 +0.0%
AffineFoldBench.eoGetOption_0_asOptional - 16.0 16.0 -0.0%
MultiFocusBench.eoFold_powerEach size=32 920.0 920.0 +0.0%
MultiFocusBench.naive_sumQty size=32 256.0 256.0 -0.0%
IsoBench.eoGet - 32.0 32.0 +0.0%
CapsBench.modifyCap - 40.0 40.0 -0.0%
LensBench.eoModifyDeep - 152.0 152.0 -0.0%
PowerSeriesPrismBench.naive_sparse size=8 128.0 128.0 +0.0%
FoldBench.mFoldPrices size=8 216.0 216.0 -0.0%
SetterBench.mModify_3 - 168.0 168.0 +0.0%
GenericsBench.handLensModify - 24.0 24.0 -0.0%
MultiFocusBench.eoFold_powerEach size=1024 43,035.9 43,035.9 +0.0%
PowerSeriesBench.naive_powerEach size=64 1,848.0 1,848.0 -0.0%
ZioDiBench.eoServiceReplace - 456.0 456.0 -0.0%
ReviewBench.naiveBuild_3 - 72.0 72.0 +0.0%
CompositionBench.reuseLens3 - 72.0 72.0 -0.0%
MultiFocusBench.naive_listMap size=4 296.0 296.0 -0.0%
Timing (ns/op) — directional only, same-VM but shared runner
Benchmark params base head Δ
KyoDiBench.handMapDrillModify - 35.7 53.9 +51.0%
CapsBench.foldMapDerivedPerCall - 21.8 28.0 +28.8%
AvroBytesBench.eoModifyPartner - 540.6 410.0 -24.2%
AvroBytesBench.eoModifyCountry - 413.9 318.5 -23.0%
MultiFocusCollectBench.naive_listSum - 36.2 41.6 +14.8%
PowerSeriesBench.monocle_powerEach size=4096 213,939.1 186,526.6 -12.8%
AvroVulcanBench.rootGet_native - 175.6 197.6 +12.6%
GetterBench.mGet_3 - 8.4 9.4 +11.3%
PlatedBench.mUniverseExpr n=512 164,557.5 182,567.8 +10.9%
AvroJsonBridgeBench.eoWideToAvro - 1,080.9 966.0 -10.6%
AvroBytesBench.naiveReadPartner - 2,035.3 2,242.5 +10.2%
JsoniterBench.jReadId size=64 35.2 38.6 +9.7%
OrderAvroBench.eoModifyStreet size=64 121.0 132.6 +9.6%
JsoniterBench.jReplaceId size=8 100.8 110.4 +9.6%
PowerSeriesPrismBench.monocle_sparse size=32 1,023.6 1,119.9 +9.4%
TraversalBench.eoFoldNested size=8 57.6 52.2 -9.3%
PlatedBench.eoUniverseDeep n=4096 98,860.3 108,056.2 +9.3%
KyoDiBench.handVarUpdate - 51.0 55.7 +9.3%
AvroVulcanBench.decode_native - 18.6 20.4 +9.3%
KyoDiBench.eoEnvFocus - 65.8 60.3 -8.4%
OrderAvroBench.eoModifyNames size=512 34,588.7 37,339.6 +8.0%
OptionalBench.eoModify_3 - 63.3 58.3 -7.9%
JsoniterBench.jReadId size=8 35.9 38.6 +7.7%
JsoniterBench.jModifyId size=8 117.0 108.0 -7.7%
OrderJsoniterBench.eoReadStreet size=512 206.7 191.4 -7.4%
OrderJsoniterBench.nativeReadStreet size=8 817.3 875.7 +7.1%
AvroVulcanBench.rootGet_bridged - 442.0 410.9 -7.0%
SchemesBench.handHylo - 10,792.8 10,034.9 -7.0%
MultiFocusBench.naive_sumQty size=256 785.3 731.6 -6.8%
OrderCirceBench.directStreet size=64 1,131.9 1,057.5 -6.6%
JsoniterBench.jMiss size=8 183.8 172.5 -6.1%
AvroJsonBridgeBench.naiveWideToJson - 1,927.3 2,041.3 +5.9%
ClickRecordBench.encode_derivedThroughPrism - 574.7 542.7 -5.6%
OrderCirceBench.eoStreet size=64 1,130.9 1,068.9 -5.5%
SetterBench.eoModify_6 - 26.3 27.7 +5.3%
OrderCirceBench.hcursorNames size=8 4,098.4 4,314.8 +5.3%
OrderAvroBench.monocleModifyStreet size=512 56,235.6 53,360.9 -5.1%
CapsBench.modifyDerivedHeld - 5.3 5.5 +4.9%
OrderCirceBench.hcursorNames size=64 32,258.8 30,725.1 -4.8%
TraversalBench.mModify size=8 287.0 300.7 +4.8%
PlatedBench.mUniverseExpr n=4096 2,652,850.9 2,778,135.5 +4.7%
AvroJsonBridgeBench.eoClickToAvro - 3,199.6 3,050.5 -4.7%
OrderAvroBench.naiveModifyStreet size=512 53,549.2 56,030.5 +4.6%
MultiFocusBench.eoModify_multiFocus size=32 1,465.4 1,397.6 -4.6%
JsoniterBench.jReplaceId size=512 3,415.1 3,570.0 +4.5%
AvroJsonBridgeBench.eoWideToJson - 700.3 669.2 -4.4%
OrderJsoniterBench.eoSumPrices size=64 10,975.6 10,493.1 -4.4%
PowerSeriesBench.eoModify_powerEach size=4 124.1 129.5 +4.4%
OrderCirceBench.directNames size=512 251,229.8 261,707.6 +4.2%
AvroBytesBench.eoGraftPayload - 166.4 159.6 -4.1%
OrderCirceBench.hcursorStreet size=8 1,185.7 1,137.7 -4.1%
PrismBench.mRightReverseGet - 2.6 2.5 -4.0%
PowerSeriesPrismBench.naive_sparse size=32 83.0 86.3 +4.0%
PlatedBench.visitorUniverseJson n=64 2,049.5 1,974.8 -3.6%
PowerSeriesBench.monocle_powerEach size=4 267.1 258.0 -3.4%
TraversalBench.eoFoldNested size=512 5,144.9 5,317.0 +3.3%
OrderCirceBench.hcursorStreet size=64 1,133.2 1,170.8 +3.3%
OpticBuildBench.buildAndUse - 1,137.8 1,175.1 +3.3%
PowerSeriesPrismBench.monocle_sparse size=512 33,203.0 34,267.2 +3.2%
OrderCirceBench.naiveStreet size=64 21,993.3 22,685.6 +3.1%
MultiFocusBench.eoModify_multiFocus size=4 260.1 252.0 -3.1%
MultiFocusCollectBench.naive_tuple6Rewrite - 13.9 13.5 -3.1%
OrderJsoniterBench.eoModifyStreet size=8 307.0 297.6 -3.1%
OrderAvroBench.monocleReadStreet size=8 512.6 528.3 +3.1%
OrderJsoniterBench.naiveReadStreet size=512 95,634.8 92,738.4 -3.0%
ClickRecordBench.encode_hand - 149.1 153.6 +3.0%
PowerSeriesNestedBench.eoModify_nested size=1024 72,393.0 74,542.4 +3.0%
OrderCirceBench.eoNamesIor size=8 4,867.7 4,723.2 -3.0%
OrderJsoniterBench.naiveModifyStreet size=512 169,901.5 164,959.8 -2.9%
PowerSeriesNestedBench.monocle_nested size=256 93,103.9 95,789.0 +2.9%
JsoniterBench.jReadStreet size=512 196.8 191.1 -2.9%
AvroVulcanBench.encode_vulcanRaw - 257.1 249.7 -2.9%
CapsBench.modifyDeepCap - 29.9 30.8 +2.8%
JsoniterBench.jModifyId size=64 469.7 456.6 -2.8%
OrderAvroBench.monocleModifyStreet size=64 7,469.3 7,267.8 -2.7%
GenericsBench.rawLensModify - 2.3 2.2 -2.7%
AvroBytesBench.naiveReadCountry - 1,743.4 1,696.8 -2.7%
OrderJsoniterBench.naiveModifyStreet size=8 3,286.9 3,374.4 +2.7%
AvroBytesBench.eoReadPartner - 224.7 218.9 -2.6%
GenericsBench.rawPrismModifyHit - 2.2 2.2 +2.5%
JsoniterBench.cModifyId size=8 8,869.4 9,094.8 +2.5%
OrderCirceBench.hcursorStreet size=512 1,152.5 1,181.4 +2.5%
MultiFocusBench.eoModify_multiFocus size=1024 52,480.1 51,165.4 -2.5%
PowerSeriesBench.eoModify_powerEach size=64 834.0 813.3 -2.5%
OpticBuildBench.reuseUse - 1,102.4 1,075.1 -2.5%
OrderAvroBench.eoModifyNames size=64 4,295.7 4,190.4 -2.5%
OptionalBench.mModify_6 - 124.3 121.3 -2.4%
GetterBench.mGet_0 - 0.5 0.5 +2.4%
PlatedBench.mUniverseJson n=512 204,488.8 209,316.2 +2.4%
JsoniterBench.jReadStreet size=8 202.1 197.4 -2.4%
OrderCirceBench.eoStreetIor size=512 1,090.0 1,115.4 +2.3%
AvroBytesBench.eoSliceGraftPayload - 328.8 321.3 -2.3%
OptionalBench.mModify_3 - 72.8 74.4 +2.3%
OptionalBench.mReplace_loyalty - 7.2 7.4 +2.2%
OptionalBench.eoReplace_loyalty - 7.4 7.6 +2.2%
OrderCirceBench.naiveStreet size=8 3,334.3 3,407.5 +2.2%
JsoniterBench.cReplaceId size=8 8,978.5 8,785.2 -2.2%
MultiFocusCollectBench.naive_tuple3Rewrite - 7.5 7.4 -2.1%
PowerSeriesBench.monocle_powerEach size=64 2,106.2 2,150.8 +2.1%
AvroJsonBridgeBench.naiveClickToAvro - 1,532.5 1,500.2 -2.1%
ClickRecordBench.encode_positional - 6,489.6 6,354.2 -2.1%
OrderJsoniterBench.nativeReadStreet size=512 35,513.4 34,784.5 -2.1%
JsoniterBench.cReadId size=8 4,017.6 4,099.7 +2.0%
PowerSeriesPrismBench.monocle_sparse size=8 336.4 343.2 +2.0%
CompositionBench.buildLens6 - 37.0 36.3 -2.0%
OrderJsoniterBench.eoSumPrices size=8 1,443.2 1,471.8 +2.0%
SchemesBench.handAna - 19,868.4 20,259.5 +2.0%
JsoniterBench.jReadStreet size=64 201.8 197.9 -2.0%
OrderCirceBench.directNames size=8 4,189.2 4,108.4 -1.9%
OrderJsoniterBench.naiveSumPrices size=64 12,384.6 12,622.2 +1.9%
FoldBench.mFoldPrices size=64 350.6 357.3 +1.9%
SchemesBench.eoHylo - 86,292.4 84,659.5 -1.9%
PlatedBench.visitorUniverseJson n=4096 187,944.3 191,418.1 +1.8%
JsoniterBench.cSumPrices size=512 359,856.7 353,246.3 -1.8%
OrderCirceBench.eoNames size=8 4,383.6 4,463.8 +1.8%
JsoniterBench.cReplaceId size=64 53,469.6 52,492.7 -1.8%
OrderCirceBench.eoStreet size=8 1,073.5 1,053.9 -1.8%
PowerSeriesNestedBench.eoModify_nested size=64 4,797.8 4,710.8 -1.8%
JsoniterBench.cModifyId size=64 53,993.7 53,024.4 -1.8%
OrderCirceBench.eoNames size=64 32,039.1 32,612.5 +1.8%
AffineFoldBench.eoGetOption_0 - 0.9 0.9 -1.8%
PowerSeriesPrismBench.eoModify_sparse size=32 364.7 358.3 -1.8%
CompositionBench.buildLens3 - 20.5 20.1 -1.8%
OrderAvroBench.naiveModifyStreet size=8 981.0 998.0 +1.7%
OrderJsoniterBench.nativeSumPrices size=512 65,282.8 66,387.5 +1.7%
TraversalBench.mFoldPrices size=8 341.0 346.7 +1.7%
PowerSeriesNestedBench.monocle_nested size=4 1,439.7 1,415.7 -1.7%
JsoniterBench.jSumPrices size=512 86,067.4 87,491.6 +1.7%
PowerSeriesBench.eoModify_powerEach size=16 261.9 266.2 +1.6%
IsoBench.mReverseGet - 3.2 3.1 -1.6%
CapsBench.getDeepDirect - 1.5 1.4 -1.6%
MultiFocusBench.eoModify_powerEach size=4 199.0 202.1 +1.6%
IsoBench.eoReverseGet - 3.0 3.0 -1.6%
JsoniterBench.cSumPrices size=8 6,362.7 6,263.0 -1.6%
JsoniterBench.cReplaceId size=512 419,367.1 425,914.9 +1.6%
LensBench.mReplace - 3.3 3.4 +1.5%
OrderJsoniterBench.monocleReadStreet size=64 11,857.7 11,677.3 -1.5%
PowerSeriesBench.monocle_powerEach size=16 631.2 640.6 +1.5%
KyoDiBench.eoMapDrillModify - 40.5 41.1 +1.5%
MultiFocusBench.naive_listMap size=256 2,092.7 2,061.7 -1.5%
CapsBench.getCap - 1.2 1.3 +1.5%
OrderCirceBench.eoNames size=512 247,377.1 251,035.3 +1.5%
OrderJsoniterBench.naiveReadStreet size=64 11,851.4 12,026.4 +1.5%
PlatedBench.visitorUniverseDeep n=4096 58,869.2 58,004.7 -1.5%
ClickRecordBench.encode_derived - 534.7 542.5 +1.5%
OrderCirceBench.naiveNames size=64 24,243.2 23,894.5 -1.4%
GenericsBench.rawPrismGetHit - 1.8 1.7 -1.4%
OrderCirceBench.directStreet size=512 1,099.1 1,083.4 -1.4%
PlatedBench.mUniverseJson n=64 19,389.2 19,116.1 -1.4%
TraversalBench.mModify size=512 33,823.8 33,353.9 -1.4%
OrderJsoniterBench.eoModifyStreet size=64 649.9 640.9 -1.4%
OrderAvroBench.monocleModifyNames size=512 102,414.5 101,003.0 -1.4%
AvroVulcanBench.decode_vulcanRaw - 216.9 219.9 +1.4%
JsoniterBench.jSumPrices size=8 1,440.1 1,459.9 +1.4%
PowerSeriesBench.monocle_powerEach size=1024 58,480.3 59,282.0 +1.4%
MultiFocusCollectBench.eoCollectMap_zipMean - 172.6 174.9 +1.4%
AvroDecodeReuseBench.confluentRecordReader - 437.7 431.7 -1.4%
OrderJsoniterBench.monocleModifyStreet size=64 20,237.6 20,513.1 +1.4%
PlatedBench.visitorTransformDeep n=4096 41,889.6 42,445.7 +1.3%
ZioDiBench.handServiceReplace - 88.6 89.7 +1.3%
PowerSeriesNestedBench.monocle_nested size=64 8,824.8 8,708.2 -1.3%
ClickRecordBench.encode_vulcanFull - 7,775.6 7,877.7 +1.3%
OrderJsoniterBench.naiveModifyStreet size=64 20,311.3 20,046.0 -1.3%
OrderAvroBench.naiveModifyStreet size=64 7,231.5 7,325.9 +1.3%
JsoniterBench.cReadId size=512 210,142.1 207,406.1 -1.3%
TraversalBench.mFoldPrices size=64 2,088.2 2,061.3 -1.3%
ZioDiBench.eoDrillModify - 113.6 115.0 +1.3%
PowerSeriesPrismBench.monocle_sparse size=128 3,906.3 3,856.9 -1.3%
OrderJsoniterBench.naiveReadStreet size=8 1,877.3 1,901.1 +1.3%
AvroBytesBench.prunedReadPartner - 643.5 651.5 +1.3%
PowerSeriesNestedBench.eoModify_nested size=4 697.5 688.8 -1.2%
AvroBytesBench.prunedReadCountry - 991.3 979.0 -1.2%
JsoniterBench.jSumPrices size=64 10,530.0 10,399.5 -1.2%
OrderJsoniterBench.monocleSumPrices size=8 2,599.6 2,567.4 -1.2%
PowerSeriesPrismBench.naive_sparse size=512 1,196.4 1,181.7 -1.2%
MultiFocusBench.naive_sumQty size=1024 4,402.9 4,348.6 -1.2%
PlatedBench.mUniverseExpr n=64 14,938.3 14,756.4 -1.2%
PowerSeriesBench.eoModify_powerEach size=1024 12,691.3 12,843.1 +1.2%
OrderJsoniterBench.monocleReadStreet size=512 93,997.5 95,113.3 +1.2%
TraversalBench.eoModify size=8 96.6 97.8 +1.2%
SchemesBench.eoCata - 79,030.3 78,109.4 -1.2%
GetterBench.eoGet_0 - 0.9 0.9 +1.2%
OrderCirceBench.monocleNames size=8 3,855.5 3,811.2 -1.1%
OrderCirceBench.eoNamesIor size=512 274,574.9 277,676.4 +1.1%
KyoDiBench.handEnvUse - 64.6 65.4 +1.1%
JsoniterBench.cReadStreet size=512 205,673.4 207,975.5 +1.1%
CompositionBench.buildLensOptional3 - 18.6 18.3 -1.1%
OrderCirceBench.directNames size=64 30,629.1 30,968.2 +1.1%
OptionalBench.eoModify_loyalty_empty - 1.3 1.3 -1.1%
JsoniterBench.cSumPrices size=64 43,764.0 43,287.2 -1.1%
OrderCirceBench.eoStreetIor size=64 1,086.1 1,097.9 +1.1%
OrderJsoniterBench.eoModifyStreet size=512 3,833.3 3,792.0 -1.1%
OrderAvroBench.naiveModifyNames size=8 1,152.6 1,165.0 +1.1%
PowerSeriesBench.eoModify_powerEach size=4096 53,972.6 53,404.2 -1.1%
AffineFoldBench.mGetOption_loyalty - 1.1 1.1 +1.1%
LensBench.eoGet - 1.1 1.1 +1.0%
AvroBytesBench.naiveModifyPartner - 2,955.9 2,986.4 +1.0%
PowerSeriesPrismBench.eoModify_sparse size=128 1,354.7 1,368.6 +1.0%
AvroBytesBench.naiveModifyCountry - 2,713.3 2,685.8 -1.0%
OrderJsoniterBench.naiveSumPrices size=8 1,977.0 1,957.2 -1.0%
GenericsBench.handLensGet - 1.1 1.1 +1.0%
AvroJsonBridgeBench.eoClickToJson - 2,920.9 2,892.0 -1.0%
OrderJsoniterBench.nativeReadStreet size=64 4,465.4 4,508.9 +1.0%
SetterBench.mModify_0 - 2.4 2.4 +1.0%
OptionalBench.eoModify_0_empty - 1.3 1.2 -0.9%
JsoniterBench.cReadId size=64 26,409.3 26,659.4 +0.9%
PlatedBench.eoUniverseExpr n=512 14,322.1 14,187.7 -0.9%
CapsBench.modifyDirect - 3.9 3.8 -0.9%
OrderAvroBench.eoModifyStreet size=512 121.8 123.0 +0.9%
PowerSeriesPrismBench.eoModify_sparse size=8 120.2 121.3 +0.9%
AffineFoldBench.mGetOption_3 - 9.7 9.8 +0.9%
PrismBench.mReverseGet - 2.5 2.5 +0.9%
PlatedBench.eoTransformExpr n=4096 130,309.6 131,468.2 +0.9%
PowerSeriesNestedBench.monocle_nested size=1024 249,430.4 247,229.7 -0.9%
JsoniterBench.jReplaceId size=64 438.6 442.4 +0.9%
OrderCirceBench.naiveNames size=512 198,663.4 200,397.2 +0.9%
OrderJsoniterBench.monocleSumPrices size=64 16,482.0 16,621.6 +0.8%
AffineFoldBench.mGetOption_6 - 24.7 24.5 -0.8%
PrismBench.eoGetRightAbsent - 1.1 1.1 +0.8%
PlatedBench.eoUniverseDeep n=64 1,896.3 1,911.5 +0.8%
JsoniterBench.cReadStreet size=8 4,197.6 4,164.1 -0.8%
OrderAvroBench.naiveReadStreet size=512 34,300.9 34,570.7 +0.8%
OrderJsoniterBench.nativeSumPrices size=64 8,085.4 8,022.4 -0.8%
OrderCirceBench.eoNamesIor size=64 35,405.4 35,678.5 +0.8%
GetterBench.mGet_6 - 25.3 25.1 -0.8%
PlatedBench.mUniverseJson n=4096 3,220,597.2 3,245,287.4 +0.8%
AvroJsonBridgeBench.naiveClickToJson - 2,993.3 2,970.4 -0.8%
MultiFocusCollectBench.naive_constSum - 1.8 1.7 -0.8%
OptionalBench.mReplace_0 - 3.7 3.6 -0.8%
PrismBench.eoRightReverseGet - 2.4 2.5 +0.7%
OrderJsoniterBench.monocleReadStreet size=8 1,883.4 1,869.3 -0.7%
OrderAvroBench.eoModifyNames size=8 576.3 572.0 -0.7%
PrismBench.mGetRightPresent - 2.4 2.5 +0.7%
SchemesBench.drosteAna - 48,565.7 48,214.5 -0.7%
OrderAvroBench.naiveReadStreet size=64 4,416.1 4,384.3 -0.7%
LensBench.eoModify - 3.8 3.8 +0.7%
PlatedBench.eoUniverseJson n=4096 234,515.1 232,851.9 -0.7%
MultiFocusCollectBench.eoModify_multiFocusTuple6 - 28.8 28.6 -0.7%
AvroVulcanBench.fieldGet_native - 105.0 105.7 +0.7%
TraversalBench.mFoldPrices size=512 31,431.9 31,650.2 +0.7%
PlatedBench.visitorUniverseJson n=512 21,074.8 21,220.0 +0.7%
MultiFocusBench.eoModify_multiFocus size=256 11,572.0 11,650.1 +0.7%
OrderJsoniterBench.monocleModifyStreet size=8 3,284.8 3,306.8 +0.7%
AvroVulcanBench.fieldGet_bridged - 104.1 103.5 -0.7%
MultiFocusBench.naive_listMap size=1024 8,206.8 8,261.2 +0.7%
GenericsBench.genPrismModifyMiss - 1.2 1.3 +0.7%
SetterBench.eoModify_0 - 2.4 2.4 -0.6%
SetterBench.eoModify_3 - 11.8 11.8 +0.6%
ReviewBench.naiveBuild_6 - 10.9 10.9 -0.6%
OrderAvroBench.monocleReadStreet size=512 34,667.5 34,449.2 -0.6%
OrderCirceBench.monocleStreet size=8 3,342.3 3,363.2 +0.6%
PowerSeriesBench.naive_powerEach size=4096 18,341.8 18,227.6 -0.6%
PowerSeriesNestedBench.naive_nested size=64 1,311.9 1,319.9 +0.6%
OrderCirceBench.directStreet size=8 1,073.2 1,079.8 +0.6%
PlatedBench.mTransformExpr n=4096 168,640.5 169,656.2 +0.6%
FoldBench.eoFoldPrices size=512 2,761.9 2,778.5 +0.6%
PowerSeriesBench.naive_powerEach size=1024 5,169.0 5,200.0 +0.6%
FoldBench.mFoldMap size=8 22.5 22.7 +0.6%
AvroBytesBench.eoReadCountry - 179.0 180.0 +0.6%
PowerSeriesBench.naive_powerEach size=256 1,616.7 1,626.2 +0.6%
AvroDecodeReuseBench.freshDecodeRecord - 1,380.5 1,372.4 -0.6%
MultiFocusCollectBench.eoModify_multiFocusTuple3 - 17.2 17.1 -0.6%
OptionalBench.eoModify_loyalty - 16.5 16.4 -0.6%
MultiFocusBench.naive_listMap size=32 249.6 248.1 -0.6%
GetterBench.eoGet_6 - 35.1 34.9 -0.6%
AvroVulcanBench.encode_native - 13.6 13.5 -0.6%
PlatedBench.visitorTransformDeep n=512 4,869.8 4,897.5 +0.6%
PrismBench.eoGetOptionAbsent - 0.9 0.9 -0.6%
MultiFocusBench.eoModify_powerEach size=256 8,497.7 8,450.0 -0.6%
PowerSeriesNestedBench.eoModify_nested size=256 18,287.1 18,389.5 +0.6%
JsoniterBench.jMiss size=512 182.6 183.7 +0.6%
AffineFoldBench.eoGetOption_0_empty - 0.9 0.9 -0.6%
TraversalBench.eoFoldPrices size=512 2,820.7 2,805.0 -0.6%
TraversalBench.eoModify size=512 7,555.2 7,513.6 -0.6%
PowerSeriesNestedBench.eoModify_nested size=16 1,508.1 1,516.3 +0.5%
AffineFoldBench.eoGetOption_loyalty_empty - 1.0 1.1 +0.5%
OrderAvroBench.eoReadStreet size=8 38.3 38.5 +0.5%
MultiFocusCollectBench.naive_zipMeanBroadcast - 166.0 165.1 -0.5%
TraversalBench.mModify size=64 1,739.1 1,748.4 +0.5%
OrderJsoniterBench.monocleModifyStreet size=512 164,014.8 163,150.2 -0.5%
OrderAvroBench.monocleModifyNames size=64 10,347.6 10,293.6 -0.5%
GenericsBench.genLensGet - 1.1 1.1 +0.5%
OrderCirceBench.monocleStreet size=64 22,217.3 22,329.3 +0.5%
OrderCirceBench.monocleNames size=512 234,469.9 233,290.3 -0.5%
OrderJsoniterBench.eoReadStreet size=64 200.7 201.7 +0.5%
FoldBench.mFoldPrices size=512 2,790.8 2,776.9 -0.5%
ReviewBench.naiveBuild_0 - 2.2 2.2 -0.5%
MultiFocusCollectBench.eoCollectMap_constSum - 2.1 2.1 -0.5%
AffineFoldBench.mGetOption_0 - 1.0 0.9 -0.5%
CapsBench.getDerivedPerCall - 1.6 1.6 +0.5%
GenericsBench.handPrismModifyMiss - 1.1 1.1 -0.5%
OrderCirceBench.hcursorNames size=512 274,332.1 273,033.3 -0.5%
GenericsBench.handPrismModifyHit - 2.8 2.8 +0.5%
AvroVulcanBench.encode_bridged - 245.9 244.7 -0.5%
OrderJsoniterBench.eoReadStreet size=8 200.7 201.7 +0.5%
ZioDiBench.handServiceGet - 14.9 14.8 -0.5%
PlatedBench.eoUniverseJson n=64 3,355.2 3,339.4 -0.5%
PowerSeriesNestedBench.monocle_nested size=16 2,869.4 2,856.0 -0.5%
AvroDecodeReuseBench.confluentRecordReaderFresh - 1,419.0 1,425.6 +0.5%
ZioDiBench.handDrillModify - 106.2 105.7 -0.5%
FoldBench.eoFoldPrices size=8 44.0 43.8 -0.5%
PowerSeriesBench.monocle_powerEach size=256 21,910.2 21,810.7 -0.5%
FoldBench.mFoldMap size=512 3,984.2 3,966.1 -0.5%
OptionalBench.mModify_0_empty - 1.4 1.4 -0.5%
AvroDecodeReuseBench.cachedDecodeRecord - 410.2 408.3 -0.5%
OpticBuildBench.build - 46.1 45.9 -0.5%
SetterBench.mModify_6 - 64.3 64.6 +0.5%
CompositionBench.buildLens1 - 5.2 5.2 -0.4%
TraversalBench.eoFoldPrices size=64 350.2 351.7 +0.4%
OrderAvroBench.monocleModifyStreet size=8 984.4 980.0 -0.4%
AvroJsonBridgeBench.naiveWideToAvro - 1,000.2 995.8 -0.4%
JsoniterBench.jModifyId size=512 3,577.2 3,561.7 -0.4%
OrderJsoniterBench.monocleSumPrices size=512 447,922.2 449,861.4 +0.4%
OptionalBench.mModify_loyalty_empty - 1.4 1.4 +0.4%
FoldBench.mFoldMap size=64 342.1 343.5 +0.4%
AffineFoldBench.mGetOption_0_empty - 0.9 0.9 +0.4%
KyoDiBench.eoMapGet - 2.8 2.8 -0.4%
AffineFoldBench.eoGetOption_6 - 32.7 32.8 +0.4%
MultiFocusBench.eoFold_powerEach size=4 86.9 86.6 -0.4%
OptionalBench.eoReplace_0 - 4.6 4.6 -0.4%
PrismBench.eoGetRightPresent - 2.3 2.3 -0.4%
JsoniterBench.cReadStreet size=64 26,603.2 26,494.0 -0.4%
PowerSeriesPrismBench.eoModify_sparse size=2048 23,137.0 23,042.8 -0.4%
OptionalBench.eoModify_6 - 143.8 143.2 -0.4%
PlatedBench.visitorTransformExpr n=4096 64,767.2 64,507.6 -0.4%
OrderCirceBench.naiveStreet size=512 185,723.6 184,988.0 -0.4%
IsoBench.mGet - 3.7 3.7 -0.4%
OrderAvroBench.monocleModifyNames size=8 1,472.5 1,466.9 -0.4%
SetterBench.eoModify_orderId - 3.1 3.1 +0.4%
OrderCirceBench.monocleNames size=64 25,400.5 25,493.4 +0.4%
OrderCirceBench.eoStreet size=512 1,087.6 1,091.5 +0.4%
SchemesBench.handCata - 13,054.4 13,007.0 -0.4%
AffineFoldBench.mGetOption_loyalty_empty - 1.1 1.1 +0.4%
GenericsBench.genPrismGetHit - 2.1 2.1 -0.4%
GenericsBench.genPrismGetMiss - 1.2 1.2 +0.4%
SchemesBench.eoAna - 105,704.6 106,079.7 +0.4%
PowerSeriesNestedBench.naive_nested size=1024 19,875.8 19,807.0 -0.3%
JsoniterBench.cModifyId size=512 418,008.1 419,449.0 +0.3%
CapsBench.getDeepCap - 1.6 1.6 -0.3%
PlatedBench.visitorTransformDeep n=64 428.4 429.9 +0.3%
PowerSeriesNestedBench.naive_nested size=4 126.1 126.6 +0.3%
CapsBench.modifyDerivedPerCall - 4.5 4.5 -0.3%
CompositionBench.reuseLensOptional3 - 58.3 58.5 +0.3%
PowerSeriesBench.naive_powerEach size=4 26.4 26.3 -0.3%
PowerSeriesPrismBench.naive_sparse size=2048 5,114.2 5,097.7 -0.3%
TraversalBench.eoModify size=64 864.0 861.3 -0.3%
PowerSeriesBench.naive_powerEach size=16 99.3 99.0 -0.3%
CompositionBench.reuseLeaf - 3.0 3.0 -0.3%
PlatedBench.eoTransformDeep n=512 11,774.3 11,811.2 +0.3%
OrderAvroBench.eoReadStreet size=512 38.2 38.4 +0.3%
LensBench.eoReplace - 3.3 3.3 +0.3%
FoldBench.eoFoldPrices size=64 350.3 349.3 -0.3%
MultiFocusBench.eoModify_powerEach size=32 1,039.9 1,036.8 -0.3%
OrderCirceBench.naiveNames size=8 3,545.8 3,535.3 -0.3%
SetterBench.mModify_orderId - 3.1 3.1 -0.3%
PlatedBench.eoUniverseExpr n=64 1,840.2 1,835.0 -0.3%
PowerSeriesBench.eoModify_powerEach size=256 3,149.8 3,158.4 +0.3%
PlatedBench.eoTransformDeep n=64 1,436.8 1,440.7 +0.3%
OptionalBench.mModify_loyalty - 16.7 16.6 -0.3%
GenericsBench.rawLensGet - 0.6 0.6 +0.3%
LensBench.mGet - 1.3 1.3 -0.3%
SchemesBench.drosteCata - 39,068.6 39,168.0 +0.3%
ZioDiBench.eoDrillGet - 12.0 12.0 +0.3%
GetterBench.mGet_orderId - 0.5 0.5 +0.2%
PlatedBench.visitorUniverseExpr n=4096 53,455.2 53,326.0 -0.2%
PrismBench.eoReverseGet - 2.4 2.4 +0.2%
AvroBytesBench.naivePassthroughPayload - 4,993.2 4,981.2 -0.2%
PowerSeriesPrismBench.eoModify_sparse size=512 5,620.2 5,633.5 +0.2%
GenericsBench.genLensModify - 3.6 3.6 -0.2%
PlatedBench.visitorUniverseExpr n=64 817.6 819.5 +0.2%
KyoDiBench.handMapGet - 2.2 2.2 -0.2%
ZioDiBench.handDrillGet - 14.8 14.7 -0.2%
FoldBench.eoFoldMap size=512 3,989.9 3,998.6 +0.2%
OptionalBench.eoModify_0 - 21.7 21.8 +0.2%
GenericsBench.genPrismModifyHit - 3.0 3.0 +0.2%
OrderAvroBench.eoReadStreet size=64 38.2 38.1 -0.2%
GetterBench.eoGet_3 - 16.4 16.3 -0.2%
OrderAvroBench.naiveModifyNames size=64 8,931.2 8,912.7 -0.2%
MultiFocusBench.eoFold_powerEach size=256 3,424.7 3,431.5 +0.2%
PlatedBench.eoTransformExpr n=64 2,035.0 2,031.0 -0.2%
GetterBench.eoGet_orderId - 0.9 0.9 +0.2%
PowerSeriesPrismBench.monocle_sparse size=2048 106,361.8 106,568.3 +0.2%
ReviewBench.naiveBuild_3 - 6.5 6.5 +0.2%
PlatedBench.visitorUniverseExpr n=512 6,712.7 6,725.6 +0.2%
TraversalBench.eoFoldPrices size=8 44.4 44.3 -0.2%
ReviewBench.eoReverseGet_0 - 2.7 2.7 +0.2%
LensBench.mModify - 4.3 4.3 +0.2%
OrderAvroBench.monocleReadStreet size=64 4,398.9 4,407.0 +0.2%
SchemesBench.drosteHylo - 64,672.3 64,555.0 -0.2%
GenericsBench.handPrismGetMiss - 1.1 1.1 -0.2%
ReviewBench.eoReverseGet_6 - 34.6 34.5 -0.2%
GenericsBench.handPrismGetHit - 2.0 2.0 -0.2%
FoldBench.eoFoldMap size=64 371.6 372.2 +0.2%
CapsBench.foldMapDirect - 21.2 21.1 -0.2%
ZioDiBench.eoServiceGet - 5.1 5.1 -0.2%
OrderJsoniterBench.nativeSumPrices size=8 1,176.5 1,174.7 -0.2%
CompositionBench.reuseLens1 - 16.4 16.4 +0.2%
CapsBench.modifyDeepDirect - 33.8 33.7 -0.1%
AffineFoldBench.eoGetOption_0_asOptional - 2.3 2.3 -0.1%
IsoBench.eoGet - 3.5 3.5 +0.1%
FoldBench.eoFoldMap size=8 21.1 21.1 -0.1%
MultiFocusCollectBench.eoCollectList_listSum - 66.9 66.8 -0.1%
CapsBench.modifyCap - 4.2 4.2 -0.1%
AffineFoldBench.eoGetOption_loyalty - 1.1 1.1 +0.1%
CapsBench.getDerivedHeld - 2.4 2.4 +0.1%
PrismBench.eoGetOptionPresent - 0.9 0.9 +0.1%
LensBench.mModifyDeep - 31.0 31.0 -0.1%
AffineFoldBench.eoGetOption_3 - 14.7 14.7 +0.1%
OptionalBench.mModify_0 - 21.6 21.5 -0.1%
MultiFocusBench.eoModify_powerEach size=1024 35,276.4 35,234.1 -0.1%
PlatedBench.eoUniverseExpr n=4096 99,073.2 98,955.6 -0.1%
CompositionBench.reuseLens6 - 131.2 131.1 -0.1%
PlatedBench.visitorUniverseDeep n=64 830.0 829.0 -0.1%
PowerSeriesPrismBench.naive_sparse size=128 324.3 323.9 -0.1%
CapsBench.getDirect - 1.1 1.1 +0.1%
OrderCirceBench.eoStreetIor size=8 1,069.8 1,068.7 -0.1%
PrismBench.mGetRightAbsent - 1.2 1.2 -0.1%
PowerSeriesNestedBench.naive_nested size=256 5,283.9 5,278.4 -0.1%
TraversalBench.eoFoldNested size=64 547.7 548.2 +0.1%
OrderJsoniterBench.eoSumPrices size=512 89,258.0 89,174.9 -0.1%
PlatedBench.visitorTransformExpr n=64 983.5 984.4 +0.1%
MultiFocusBench.naive_sumQty size=4 7.5 7.5 -0.1%
AvroVulcanBench.decode_bridged - 219.7 219.5 -0.1%
PlatedBench.mTransformExpr n=64 2,586.7 2,584.4 -0.1%
CapsBench.foldMapDerivedHeld - 22.4 22.4 +0.1%
ReviewBench.eoReverseGet_3 - 19.9 20.0 +0.1%
CapsBench.foldMapCap - 22.3 22.3 +0.1%
GenericsBench.handLensModify - 2.8 2.8 -0.1%
PlatedBench.eoUniverseDeep n=512 14,656.2 14,668.0 +0.1%
PrismBench.mGetOptionPresent - 1.1 1.1 +0.1%
PowerSeriesNestedBench.naive_nested size=16 374.2 374.5 +0.1%
PrismBench.mGetOptionAbsent - 1.1 1.1 -0.1%
ZioDiBench.eoServiceReplace - 81.3 81.2 -0.1%
OrderAvroBench.naiveModifyNames size=512 69,635.4 69,685.8 +0.1%
LensBench.eoModifyDeep - 34.0 33.9 -0.1%
OrderAvroBench.naiveReadStreet size=8 513.0 512.6 -0.1%
SetterBench.mModify_3 - 28.2 28.3 +0.1%
PlatedBench.eoUniverseJson n=512 27,348.1 27,363.0 +0.1%
JsoniterBench.jMiss size=64 172.6 172.5 -0.1%
PlatedBench.mTransformExpr n=512 15,473.1 15,465.6 -0.0%
PlatedBench.eoTransformDeep n=4096 122,378.7 122,431.3 +0.0%
FoldBench.mFoldPrices size=8 44.4 44.3 -0.0%
OrderAvroBench.eoModifyStreet size=8 121.2 121.3 +0.0%
PowerSeriesPrismBench.naive_sparse size=8 25.2 25.2 +0.0%
PlatedBench.visitorUniverseDeep n=512 7,243.5 7,241.0 -0.0%
MultiFocusBench.naive_sumQty size=32 65.6 65.6 -0.0%
PlatedBench.visitorTransformExpr n=512 7,543.9 7,545.7 +0.0%
MultiFocusBench.eoFold_powerEach size=32 396.4 396.5 +0.0%
OrderJsoniterBench.naiveSumPrices size=512 97,534.7 97,551.9 +0.0%
PlatedBench.eoTransformExpr n=512 16,316.2 16,318.1 +0.0%
KyoDiBench.eoVarUpdateFocus - 51.8 51.8 +0.0%
MultiFocusBench.eoFold_powerEach size=1024 14,936.9 14,938.5 +0.0%
PowerSeriesBench.naive_powerEach size=64 396.6 396.5 -0.0%
OrderCirceBench.monocleStreet size=512 185,365.4 185,376.9 +0.0%
JsoniterBench.jReadId size=512 38.7 38.7 -0.0%
CompositionBench.reuseLens3 - 45.8 45.8 -0.0%
MultiFocusBench.naive_listMap size=4 33.4 33.4 -0.0%
AffineFoldBench.eoGetOption_0_asAffineFold - 0.9 0.9 +0.0%

New (head only, not diffed): AvroEncodeRouteBench.eo_encodeToAny, AvroEncodeRouteBench.eo_encodeValue, AvroEncodeRouteBench.handwritten_stream, AvroEncodeRouteBench.naive_freshPlumbing

base_sha: 3c53aa70d52d616a5dcf8ab46f61912ce631769f · head_sha: a9b9c2b8983b0b11cdb6caca0653570c5e7ceb61 · jdk: temurin-21 · runner: ubuntu-22.04 · jmh_params: -i 3 -wi 2 -f 1 -t 1 -foe true -prof gc -rf json · profile: pr:-i3-wi2-f1-t1-gc

@kryptt
kryptt merged commit e3551fb into main Sep 29, 2026
16 checks passed
kryptt added a commit that referenced this pull request Sep 29, 2026
Minor release on the 0.x line. One change since 0.17.0: the #119 attribution
and its fix — AvroBinaryCursor.writeDatum now writes through a per-thread
reused buffer/encoder/writer set instead of rebuilding the plumbing per call
(full derived-encode route 3,456 → 904 B/op on the attribution fixture, wire
bytes unchanged). Non-breaking: every touched symbol is private[avro], so no
mima.sbt entry and no recompile warning — 0.18.0 is a drop-in for 0.17.x.

- build.sbt: tlBaseVersion 0.17 -> 0.18. The tag still derives the published
  version; this is what gates which tags the build accepts and what the
  snapshot version reads as.
- CHANGELOG.md: `## [0.18.0] - 2026-09-29` cut out of Unreleased (the section
  was written at release time from the #120 attribution, not staged under
  Unreleased during the PR), link refs updated.

Verified before tagging: `sbt githubWorkflowGenerate` leaves ci.yml
byte-identical, scalafmtCheckAll + scalafmtSbtCheck + benchmarks/scalafmtCheck
+ githubWorkflowCheck all pass, and root-aggregate `sbt test` is green on JDK
25 (kyo in the aggregate; the merged #120 tree was swept in full earlier the
same day).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant