perf: use yaml.CSafeLoader/CDumper for 4x faster virtual index merge #39

Merged
unkinben merged 1 commits from benvin/issue-34-csafeloader-cdumper into master 2026-05-02 11:51:01 +10:00

1 Commits

Author SHA1 Message Date
unkinben b7488fce10 perf: use yaml.CSafeLoader/CDumper for 4x faster virtual index merge
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
Replace yaml.safe_load / yaml.Dumper with the C extension equivalents
(yaml.CSafeLoader, yaml.CDumper) for all YAML parsing and serialisation
in the virtual repo merge path. A module-level try/except falls back to
the pure-Python SafeLoader/Dumper when libyaml is not available.

Measured on 19-member helm-all (real upstream data):
  Before (SafeLoader + Dumper): merge=38,877ms
  After  (CSafeLoader + CDumper): merge=9,625ms  (4.0x faster)

Local microbenchmark (500 charts × 10 versions × 19 members):
  Before: 40.8s  After: 6.1s  (6.7x faster)
2026-05-02 01:50:21 +10:00