Publish scoped renderer measurements and reproducible samples

This commit is contained in:
2026-09-09 03:20:21 -04:00
parent f5dcb8f10a
commit 7e89ebfaba
5 changed files with 116 additions and 4 deletions
+1 -1
View File
@@ -1 +1 @@
{"schema_version":2,"project":"sandwich-hime","export_policy":"exact-allowlist-v1","export_mode":"release","file_count":125,"allowlist_sha256":"b320a95ca85f48941ee956fde1eda46e0d9bc664da21d13c5f65a8f623063ed5","manifest_sha256":"b3a0794eb5757d35ed3f32e0b1c131be16aff417e7bee20db36c124963cbd6b8"} {"schema_version":2,"project":"sandwich-hime","export_policy":"exact-allowlist-v1","export_mode":"release","file_count":127,"allowlist_sha256":"4fa75caba7d96db619006b2d961da726e5a5c44c724a73a64bb9770c542d7e17","manifest_sha256":"370420e042f66865fc475047ba53d872b269d85b071ae62081d67b59dac89eb4"}
+5 -3
View File
@@ -2,7 +2,7 @@
658ba4b4645426f8c3249337f47669074ae9249a31703dcd9ea4c1afec45e20b ./.gitattributes 658ba4b4645426f8c3249337f47669074ae9249a31703dcd9ea4c1afec45e20b ./.gitattributes
d5ae411fb422b2388cac220f9655900eecbc49ece961b2bb2a6610347733b756 ./.gitignore d5ae411fb422b2388cac220f9655900eecbc49ece961b2bb2a6610347733b756 ./.gitignore
98f663ab0f376b4550094465ec2e06192d1e0b0707604ec6794f20b0d10952c1 ./AI_CONTRIBUTIONS.md 98f663ab0f376b4550094465ec2e06192d1e0b0707604ec6794f20b0d10952c1 ./AI_CONTRIBUTIONS.md
954fb577484d5ca95f3fedb80d967ec6012ed4ed24fb7d999174f1b163697c80 ./CHANGELOG.md eb5a0df1c6c3392d50e7df2a45af25c7e1586edd02800a932b6e1429c051d852 ./CHANGELOG.md
b696cab3cf482ff5737501371cca749369b119351383e698ced42bcdbcbfc8ae ./CLA.md b696cab3cf482ff5737501371cca749369b119351383e698ced42bcdbcbfc8ae ./CLA.md
797e884105738fc931b585b695424f43ec5f296d8ab9bba5191b096e87a9e2c2 ./CONTRIBUTING.md 797e884105738fc931b585b695424f43ec5f296d8ab9bba5191b096e87a9e2c2 ./CONTRIBUTING.md
86d7e49d5d90e0f98a4ad0f14b5d8b9f11ed09a1e29ecdf27388316b28e195e8 ./COPYRIGHT 86d7e49d5d90e0f98a4ad0f14b5d8b9f11ed09a1e29ecdf27388316b28e195e8 ./COPYRIGHT
@@ -21,6 +21,7 @@ d566b8b27777cb33209602df81d654a94072ad875440c089ac41764a349b6c17 ./SPEC.md
3d9e680cdfe147df7cc9ff29ecf1d3e566e9cd559ae84db4880e559b9c7c7205 ./TRADEMARKS.md 3d9e680cdfe147df7cc9ff29ecf1d3e566e9cd559ae84db4880e559b9c7c7205 ./TRADEMARKS.md
e2ce8cbc43e4575984839b61332207f7c90e2848fa270d4c68dbc5fc394f28e7 ./cmd/himesan-release/main.go e2ce8cbc43e4575984839b61332207f7c90e2848fa270d4c68dbc5fc394f28e7 ./cmd/himesan-release/main.go
9dda7402f76b38d417981f9e7658880b592c282c00163a3fdbfb0ab55e1edcba ./cmd/himesan/contract_test.go 9dda7402f76b38d417981f9e7658880b592c282c00163a3fdbfb0ab55e1edcba ./cmd/himesan/contract_test.go
d53548ffa05a386bd869cf6b70d1ebe3397eb49bf0c05d9dc48ed94ed85a052c ./cmd/himesan/doc.go
8cd8db68e1300f9b78cc7235855853cbc7aeb499a921419e23a22e4d22826fcb ./cmd/himesan/main.go 8cd8db68e1300f9b78cc7235855853cbc7aeb499a921419e23a22e4d22826fcb ./cmd/himesan/main.go
8c53127437cd8a77676fdbcdf62f6dd9346e533665bf7d5ac32f103839a24974 ./cmd/himesan/main_test.go 8c53127437cd8a77676fdbcdf62f6dd9346e533665bf7d5ac32f103839a24974 ./cmd/himesan/main_test.go
de004164324a640555256a91ca21a02be163bd3d231b38f08f8539c9a77ef665 ./contracts/diagnostic-codes-v1.txt de004164324a640555256a91ca21a02be163bd3d231b38f08f8539c9a77ef665 ./contracts/diagnostic-codes-v1.txt
@@ -30,7 +31,8 @@ e6fb36b274bf44143497b2af454e9ee0fabe6122f935cbf97e785a003277e211 ./contracts/hi
09e574ed55e3a48fa117936465d3de887686cf3f2a5c4231cf598ff30e4b1a75 ./contracts/himesan-operation-output-v1.schema.json 09e574ed55e3a48fa117936465d3de887686cf3f2a5c4231cf598ff30e4b1a75 ./contracts/himesan-operation-output-v1.schema.json
7679c9908266811a4336be9698982e58ffedecedf2c340b082bf5dcdef1554dd ./contracts/himesan-version-output-v1.schema.json 7679c9908266811a4336be9698982e58ffedecedf2c340b082bf5dcdef1554dd ./contracts/himesan-version-output-v1.schema.json
1ecbba46f8b1b2d548a01d7e98afae17b2dd17a814338ff1f88db885655d1c07 ./docs/ARCHITECTURE.md 1ecbba46f8b1b2d548a01d7e98afae17b2dd17a814338ff1f88db885655d1c07 ./docs/ARCHITECTURE.md
9e4f5a80afbffe51dda3e7f9fa5221e3ef4ca516c4b7f7ca33b61ac97ff213bb ./docs/BENCHMARKS.md c26f1f2030f0661aaf3bab963efc132aa63e8fae61be05ff18b4c9c8bc35cb0d ./docs/BENCHMARKS.md
015e15c7b00edd0f5d3d4906745f0a6def526cb66422aa27eb8b5c6a935d9e3d ./docs/BENCHMARK_RESULTS.md
5c3a62fed80ca28d56558b8c75e8b5be8ba7d2554127adf4609d96da314e85b0 ./docs/BRAND.md 5c3a62fed80ca28d56558b8c75e8b5be8ba7d2554127adf4609d96da314e85b0 ./docs/BRAND.md
60f0c1257cfce8388a252a105042be57c2978820d37ef81e46c6d3a49474fde3 ./docs/COMPATIBILITY.md 60f0c1257cfce8388a252a105042be57c2978820d37ef81e46c6d3a49474fde3 ./docs/COMPATIBILITY.md
d1b4ef192e02b59a9d8d0eb3b1072392e633116433fa308f6ca9bbe17b75e213 ./docs/DEVELOPMENT_SERVER.md d1b4ef192e02b59a9d8d0eb3b1072392e633116433fa308f6ca9bbe17b75e213 ./docs/DEVELOPMENT_SERVER.md
@@ -115,7 +117,7 @@ f391ac912cdeb6b139d4feaec29a992cb53faea0fc4bbe805fd380450b238f7c ./scripts/nati
a038a002f0c895fef38a7265bcb7df01efdda57de5c4d36d0dc7c8e377798a95 ./scripts/package-macos.sh a038a002f0c895fef38a7265bcb7df01efdda57de5c4d36d0dc7c8e377798a95 ./scripts/package-macos.sh
7d1e3606f3159e0d5d222bb5b02171ad90bb2c42b0e041042dcf8e6b7692c40a ./scripts/package-native.sh 7d1e3606f3159e0d5d222bb5b02171ad90bb2c42b0e041042dcf8e6b7692c40a ./scripts/package-native.sh
1fddbdf81e86f4310a603cedd0f24a39d6c62d810c7e1e2e6c5f7bff1d1d4198 ./scripts/public-snapshot-lib.sh 1fddbdf81e86f4310a603cedd0f24a39d6c62d810c7e1e2e6c5f7bff1d1d4198 ./scripts/public-snapshot-lib.sh
b320a95ca85f48941ee956fde1eda46e0d9bc664da21d13c5f65a8f623063ed5 ./scripts/public-snapshot.allow 4fa75caba7d96db619006b2d961da726e5a5c44c724a73a64bb9770c542d7e17 ./scripts/public-snapshot.allow
8fa4ee6c6ae80c261a8f5c1ff18a89185b4ce6472ccb577e1daf61afaa146e14 ./scripts/release-check.sh 8fa4ee6c6ae80c261a8f5c1ff18a89185b4ce6472ccb577e1daf61afaa146e14 ./scripts/release-check.sh
494cf5573cc6a891d4243ec01a98c43263de75090cb3b55c9c398e545b1ec1a8 ./scripts/sign-notarize-macos.sh 494cf5573cc6a891d4243ec01a98c43263de75090cb3b55c9c398e545b1ec1a8 ./scripts/sign-notarize-macos.sh
7c65325664e95df1a63262bc440a599fb799b36123a68c5cc26cfb81ddd08efa ./scripts/test-public-snapshot.sh 7c65325664e95df1a63262bc440a599fb799b36123a68c5cc26cfb81ddd08efa ./scripts/test-public-snapshot.sh
+4
View File
@@ -2,6 +2,10 @@
# Benchmark policy # Benchmark policy
The [RC1 measurement report](BENCHMARK_RESULTS.md) records the observed values,
hardware, scope and original samples. Historical RC results must not be relabelled
as measurements of a later release candidate.
Benchmarks compare equivalent typed views and output against Go's `html/template` baseline. Reports include hardware, operating system, Go version, repository commit, dataset identity, exact commands, warmup/run counts, `ns/op`, bytes and allocations per operation, end-to-end response latency where relevant, output size, and statistical method. Benchmarks compare equivalent typed views and output against Go's `html/template` baseline. Reports include hardware, operating system, Go version, repository commit, dataset identity, exact commands, warmup/run counts, `ns/op`, bytes and allocations per operation, end-to-end response latency where relevant, output size, and statistical method.
The v1 gate is no material regression against equivalent repository-owned The v1 gate is no material regression against equivalent repository-owned
+105
View File
@@ -0,0 +1,105 @@
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
# RC1 renderer measurements
These are historical, maintainer-run measurements of the **RC1 runtime**, not
new measurements of a final v1 artifact and not an independent performance audit.
They were collected on August 24, 2026 from public commit
`e730dd1b56061501881818c7000364a55cd49e35`, tree
`931023c7d42591b5280ff81d64ce86d2ebba85b7`.
## What was measured
The committed `sando/benchmark_test.go` corpus renders one synthetic typed view
to `io.Discard` during timing. `TestBenchmarkCorpusEquivalent` first requires
identical buffered output.
`BenchmarkV1CorpusSandwichHime` mirrors generated runtime writer calls;
`BenchmarkV1CorpusHTMLTemplate` executes a pre-parsed Go standard-library template.
Both include the measured render allocations. Template parsing is not charged to
the baseline. Compiler execution, HTTP, routing, databases and deployment are
outside this measurement.
Each renderer has ten samples, with two seconds requested per sample. The result
is the median of the ten `ns/op` values, not the fastest sample. There was no
separately recorded application warmup phase; Go's benchmark harness performs
its normal iteration calibration. See the [predeclared policy](BENCHMARKS.md).
| Host | Go | Hime median ns/op | html/template median ns/op | Hime/baseline time |
| --- | --- | ---: | ---: | ---: |
| Apple M1, Darwin/arm64, 8 logical CPUs | 1.26.7 | 1,161.0 | 4,958.0 | 23.4% |
| Apple M1, Darwin/arm64, 8 logical CPUs | 1.27.0 | 1,149.5 | 4,800.5 | 23.9% |
| Xeon E5-2620 v2, Linux/amd64, 4-CPU container limit | 1.26.7 | 4,362.5 | 22,837.5 | 19.1% |
| Xeon E5-2620 v2, Linux/amd64, 4-CPU container limit | 1.27.0 | 3,877.5 | 22,003.5 | 17.6% |
All samples recorded **688 B/op and 21 allocations/op** for Sandwich Hime,
versus **1,600 B/op and 58 allocations/op** for `html/template`. Linux ran
natively in a read-only, network-disabled,
capability-dropped container limited to 4 GiB and 512 processes. macOS ran
natively. Exact OS patch/kernel versions were not captured in these benchmark
logs; do not infer them from the toolchain versions.
The baseline took approximately **4.25.7 times as long** on these lanes.
This does not establish whole-site speed, request throughput, a comparison
against every Go template engine, or a universal result on other workloads.
The samples are sequential, not a statistical study of concurrent application
load. No confidence interval or causal claim about the difference between the
two machines is implied. We do not claim to be the fastest engine.
### September 9 repeat check
A local repeat on Apple M1, Darwin/arm64, Go 1.27.0 used the same command and
runtime source unchanged from the public RC1 commit above. Output equivalence
passed. Median times were **1,034.5 ns/op**
for Hime and **4,044.0 ns/op** for the baseline (25.6%, approximately 3.9 times
as long for the baseline). Allocation counts and bytes remained 21/688 and
58/1,600 respectively. This is a local repeat, not a final-release artifact gate.
- Hime: `1028, 1021, 1028, 1031, 1033, 1097, 1063, 1065, 1041, 1036`
- Baseline: `4024, 4218, 4053, 4035, 4156, 4098, 4022, 3993, 4133, 3980`
The changed timing ratio is a useful reminder to rerun the workload on the
deployment hardware rather than treating a historical speedup as a guarantee.
## Reproduce
Check out the public commit above, select one of the recorded Go versions and,
from its `sando` directory, run:
```sh
GOWORK=off go test -run '^TestBenchmarkCorpusEquivalent$' \
-bench '^BenchmarkV1Corpus' -benchmem -benchtime=2s -count=10
```
Use `GOMAXPROCS=8` for the recorded Darwin lane or `GOMAXPROCS=4` for the Linux
lane, and document the actual hardware/resource limits. Compare within a host;
do not treat absolute times from different hardware as a controlled comparison.
## Recorded samples
Values below are `ns/op` in original sample order. Each vector contains ten
measurements. Raw-log digests identify the retained original evidence; these
vectors expose the measurements without publishing private runner metadata.
### Darwin/arm64, Go 1.26.7
- Hime: `1168, 1163, 1159, 1159, 1164, 1171, 1159, 1160, 1159, 1162`
- Baseline: `4771, 4802, 5117, 4846, 4885, 4928, 5017, 4988, 5036, 5105`
- Raw-log SHA-256: `7b68a643d685168dbd77cf3df617e8de59aa8063f6728de6c2d664173b0b05bd`
### Darwin/arm64, Go 1.27.0
- Hime: `1102, 1107, 1120, 1125, 1144, 1155, 1167, 1169, 1167, 1180`
- Baseline: `4686, 4924, 5132, 4750, 4822, 4741, 4791, 4787, 4810, 4822`
- Raw-log SHA-256: `b85481317da41bc63ad8afc317da2fd1075184405e7704a69714f42453d7dd4c`
### Linux/amd64, Go 1.26.7
- Hime: `4291, 4496, 4112, 4357, 4400, 3984, 4368, 4511, 4145, 4375`
- Baseline: `23663, 22300, 22364, 22946, 22863, 22812, 22078, 24476, 23041, 20900`
- Raw-log SHA-256: `277eee8f2488b0aa0b752584a46d3737df87defd311fd0bcf722aea81612a960`
### Linux/amd64, Go 1.27.0
- Hime: `4314, 3939, 3950, 3861, 3797, 3821, 3756, 3651, 3894, 4170`
- Baseline: `21346, 21015, 22272, 22066, 22198, 21059, 22473, 21318, 21941, 22447`
- Raw-log SHA-256: `a5d760c0fb76012b5923376dfcd80a1f1f44bf0043145f4352e4ec820aa475b3`
+1
View File
@@ -36,6 +36,7 @@ contracts/himesan-operation-output-v1.schema.json
contracts/himesan-version-output-v1.schema.json contracts/himesan-version-output-v1.schema.json
docs/ARCHITECTURE.md docs/ARCHITECTURE.md
docs/BENCHMARKS.md docs/BENCHMARKS.md
docs/BENCHMARK_RESULTS.md
docs/BRAND.md docs/BRAND.md
docs/COMPATIBILITY.md docs/COMPATIBILITY.md
docs/DEVELOPMENT_SERVER.md docs/DEVELOPMENT_SERVER.md