Skip to content

feat: parallelise Monte Carlo, add histogram sorting - #3

Merged
cloudygreybeard merged 1 commit into
mainfrom
feat/parallel-monte-carlo
Aug 1, 2026
Merged

cloudygreybeard merged 1 commit into
mainfrom
feat/parallel-monte-carlo

Conversation

@cloudygreybeard

Copy link
Copy Markdown
Owner

See commit message for full details. 80x wall-clock speedup at 100M trials, histogram sort/rank flags, style guide fixes, acronym definitions.

Parallel Monte Carlo:
- Fan-out/fan-in across runtime.NumCPU() goroutines with per-worker
  ChaCha8 PRNGs seeded from crypto/rand
- Workers accumulate in local frequency maps, send batches of 10,000
- Wall-clock: 100M trials in 220ms vs 17.5s sequential (80x, M3 Pro)

Histogram sorting:
- --sort flag: original, count[-desc|-asc], name[-asc|-desc]
- --rank shorthand for --sort=count (most frequent first)
- Sort applies to both terminal histogram and TSV output

Google Go Style Guide fixes:
- Extract whitespace regexp to package-level var
- Return errors from Histogram.Render and WriteTSV
- Fix MonteCarlo doc comment grammar

README:
- Define all first-use acronyms (GCSE, ODE, POSIX, CSPRNG, PRNG, TSV)
- New section 2.8 on concurrent trial generation with benchmarks
- Worked examples for sort/rank flags
- Updated flags reference
@cloudygreybeard
cloudygreybeard merged commit 4033ded into main Aug 1, 2026
3 checks passed
@cloudygreybeard
cloudygreybeard deleted the feat/parallel-monte-carlo branch August 1, 2026 07:43
cloudygreybeard added a commit that referenced this pull request Aug 1, 2026
Parallel Monte Carlo:
- Fan-out/fan-in across runtime.NumCPU() goroutines with per-worker
  ChaCha8 PRNGs seeded from crypto/rand
- Workers accumulate in local frequency maps, send batches of 10,000
- Wall-clock: 100M trials in 220ms vs 17.5s sequential (80x, M3 Pro)

Histogram sorting:
- --sort flag: original, count[-desc|-asc], name[-asc|-desc]
- --rank shorthand for --sort=count (most frequent first)
- Sort applies to both terminal histogram and TSV output

Google Go Style Guide fixes:
- Extract whitespace regexp to package-level var
- Return errors from Histogram.Render and WriteTSV
- Fix MonteCarlo doc comment grammar

README:
- Define all first-use acronyms (GCSE, ODE, POSIX, CSPRNG, PRNG, TSV)
- New section 2.8 on concurrent trial generation with benchmarks
- Worked examples for sort/rank flags
- Updated flags reference
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