Add URL-level concurrency (-c flag, Step 7)
Probe multiple URLs in parallel with a bounded worker pool; the N samples of each URL remain sequential to preserve accurate min/avg/max statistics. Default auto-concurrency is min(numURLs, 8); -c 1 restores serial mode. Output is always buffered and printed in original input order. Verified clean with go test -race. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
18
CHANGELOG.md
18
CHANGELOG.md
@@ -4,6 +4,24 @@ All completed features are logged here in reverse-chronological order.
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-01 01:23 — Concurrency (Go, Step 7)
|
||||
|
||||
- Added `-c`/`--concurrency` flag: max URLs probed in parallel (0 = auto)
|
||||
- Default auto-concurrency: `min(numURLs, 8)` — scales with workload, caps at 8
|
||||
- Parallelism is **across URLs only**; the N samples of each URL stay sequential
|
||||
to preserve the accuracy of per-URL min/avg/max statistics
|
||||
- Output buffered and printed in original input order (deterministic for both
|
||||
text and JSON), exit-code accumulation unchanged
|
||||
- Implementation: semaphore channel + `sync.WaitGroup`, each goroutine writes
|
||||
only its own indexed result slot — verified clean with `go test -race`
|
||||
- Added `make go-test-race` target to the Makefile
|
||||
- 3 new tests: `TestRunConcurrentOrder`, `TestConcurrentWorstCode`,
|
||||
`TestConcurrentJSONOrder`
|
||||
- Updated runtime estimates in `docs/custom-usage-examples.md`
|
||||
- User doc: `docs/usage/step-7-concurrency.md`
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-01 01:05 — Root Makefile
|
||||
|
||||
- Namespaced targets: `go-build`, `go-run`, `go-test`, `go-test-verbose`, `go-check`, `go-cover`, `go-fmt`, `go-vet`, `go-tidy`, `go-install`, `go-lint`, `go-clean`
|
||||
|
||||
Reference in New Issue
Block a user