Publish scoped renderer measurements and reproducible samples
This commit is contained in:
@@ -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"}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.2–5.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`
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user