Measure the size and complexity of a Helm values.yaml file across environments.
Helm merges values from multiple sources — the chart's default values.yaml, any `-f` override files, and `--set` flags — using a deep-merge where later sources take precedence over earlier ones. The final in-memory values object is not the simple sum of every source's size, because keys defined in both the defaults and an override are only represented once in the merged result, so the true footprint subtracts that overlap.
mergedSize = defaultValues + overrideValues - overlap
From lowest to highest precedence: chart's values.yaml, parent chart's values for subcharts, `-f`/`--values` files in the order given, then `--set`/`--set-string`/`--set-json` flags, with later sources overriding earlier ones key-by-key.
Marginally — Go template rendering has to walk the values object for every `{{ .Values.* }}` reference, so very large merged values (thousands of keys) can add measurable render time on complex charts, though it's rarely the dominant cost.
Run `helm template` with `--debug` or diff the chart's default values.yaml against your override file key-by-key; tools like `yq` or `dyff` can compute structural diffs to identify overlapping paths precisely.