Skip to content

refactor: Pre-compile regexes used inside loops#9

Merged
bketelsen merged 1 commit intomainfrom
yeti/improve-c2b3
Mar 24, 2026
Merged

refactor: Pre-compile regexes used inside loops#9
bketelsen merged 1 commit intomainfrom
yeti/improve-c2b3

Conversation

@bketelsen
Copy link
Copy Markdown

Several regex patterns are compiled on every function call or inside loops:

  1. internal/generator/homebrew/generator.go:212extractPlatform compiles regexp.MustCompile(...) each time it's called, and it's invoked per-bottle in a loop at line 131.

  2. internal/generator/rpm/parser.go:172-180parseVersionFromDistro compiles 6+ regexes in a loop on every call, plus one more fallback regex at line 180.

  3. internal/generator/homebrew/parser.go:53-57parseFormula compiles 5 regexes per formula file.

Move all of these to package-level var declarations so they are compiled once at program startup. This is idiomatic Go and avoids unnecessary allocations, especially when processing many packages.


Automated improvement by yeti improvement-identifier

Move regexp.MustCompile calls from inside functions to package-level var
declarations so patterns are compiled once at program startup instead of
on every call. This affects:

- homebrew/generator.go: extractPlatform regex (called per-bottle)
- homebrew/parser.go: 5 formula-parsing regexes (compiled per file)
- rpm/parser.go: 7 distro-version regexes (compiled per call)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bketelsen bketelsen merged commit 0e602c1 into main Mar 24, 2026
1 check passed
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.

2 participants