Measure delivery output and version costs
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Computational Efficiency Implementation Plan
|
||||
|
||||
**Status:** Stage 1 complete; Stages 2–11 pending.
|
||||
**Status:** Stages 1–2 complete; Stages 3–11 pending.
|
||||
|
||||
## Purpose And Baseline
|
||||
|
||||
@@ -126,6 +126,53 @@ measurement support only.
|
||||
**Owners:** Benchmark files in `internal/delivery`, `internal/gotool`,
|
||||
`internal/runtimeinfo`, and root delivery fixtures.
|
||||
|
||||
**Completion:** Complete. Measurements cover declarations and local
|
||||
verification of two deterministic 16 MiB files, prebuilt facade delivery for
|
||||
fresh uploads and matching retries, combined output capture and forwarding at
|
||||
4 KiB and 8 MiB, and injected and real metadata version access. The local HTTP
|
||||
fixture hashes and counts incoming multipart bytes incrementally and streams
|
||||
matching files from immutable fixture data. It verifies uploaded identities and
|
||||
that retries match all three declared assets without uploading again.
|
||||
|
||||
### Delivery, Output, And Runtime Baseline
|
||||
|
||||
The baseline is commit `29e1bab`, before production refactoring, using the same
|
||||
Go, Git, operating system, processor, benchmark command, and three repetitions
|
||||
recorded above. Artifact declaration and preflight fixtures contain two
|
||||
deterministic 16 MiB files (33,554,432 binary bytes per operation); setup and
|
||||
initial writes are outside the timers. Declaration currently hashes each file,
|
||||
and declaration plus local verification therefore measures both hashing passes.
|
||||
The facade benchmark uses a committed tagged source fixture and prebuilt
|
||||
artifacts, so its time includes local source checks, hashing, HTTP requests, and
|
||||
streamed body comparison or upload, but no Go compilation. Fresh hosted state is
|
||||
reset outside the timed region for every operation. Retry state is prepared
|
||||
before timing. The fixture server retains only digest and size metadata for
|
||||
uploads and streams known matching bytes directly from shared fixture content.
|
||||
|
||||
Output measurements call the combined writer directly, with forwarding to
|
||||
`io.Discard`, then capture its completed buffer. They include the current
|
||||
completed-output copy. Runtime fallback measurements call `Version()` repeatedly
|
||||
against real build metadata; injected access measures the selection helper's
|
||||
injected-version branch. The benchmark process reports its own allocations,
|
||||
including local HTTP fixture work; streamed artifact bodies are not buffered by
|
||||
the fixture server.
|
||||
|
||||
| Measurement | Baseline observations | Final comparison |
|
||||
| --- | --- | --- |
|
||||
| Artifact declarations, two 16 MiB files | 94.3–95.4 ms; 33,554,432 bytes processed; about 68.9 KB allocated. | Pending Stage 11. |
|
||||
| Declarations plus local verification | 186.7–188.4 ms; 33,554,432 binary bytes per each of two passes; about 136.2 KB allocated. | Pending Stage 11. |
|
||||
| Facade delivery, fresh uploads | 429–447 ms; 32 MiB binary payload, two files plus manifest; 1.43–1.46 MB allocated. | Pending Stage 11. |
|
||||
| Facade delivery, matching retry | 309.1–310.0 ms; 32 MiB of local verification plus streamed remote comparisons; 1.21–1.22 MB allocated. | Pending Stage 11. |
|
||||
| Combined output, 4 KiB and `io.Discard` | 1.82–1.87 μs; 8,256 B and 3 allocations per operation. | Pending Stage 11. |
|
||||
| Combined output, 8 MiB and `io.Discard` | 2.02–2.36 ms; 16.78 MB and 3 allocations per operation, including the completed capture copy. | Pending Stage 11. |
|
||||
| Injected version selection | 0.745–0.754 ns; 0 B and 0 allocations. | Pending Stage 11. |
|
||||
| Repeated real metadata fallback | 1.438–1.474 μs; 1,184 B and 7 allocations per operation. | Pending Stage 11. |
|
||||
|
||||
The delivery observations include local HTTP and filesystem costs specific to
|
||||
these fixtures. The output component benchmark does not include child startup;
|
||||
the real delivery benchmark does include HTTP request handling. These results
|
||||
describe measured workloads and do not establish runtime guarantees.
|
||||
|
||||
1. Extend the same benchmark prefix to declaration/preflight processing of two
|
||||
deterministic 16 MiB artifact files. Measure prebuilt facade `Deliver`
|
||||
against a local HTTP fixture for fresh uploads and matching retries.
|
||||
|
||||
Reference in New Issue
Block a user