Skip to content

perf: add skip_reference_registration to all XMI model classes#86

Merged
ronaldtse merged 1 commit into
mainfrom
perf/skip-reference-registration
May 20, 2026
Merged

perf: add skip_reference_registration to all XMI model classes#86
ronaldtse merged 1 commit into
mainfrom
perf/skip-reference-registration

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Eliminates ~76K useless Store registrations during XMI parsing.

StackProf profiling showed WeakRef/Store overhead consuming 32-70% of total CPU time. This adds skip_reference_registration to every Lutaml::Model::Serializable subclass in the XMI gem.

Ruby class instance variables don't inherit — every subclass needs the declaration explicitly, including indirect inheritance chains like UpperValue < DefaultValue, Sparx::Root < ::Xmi::Root, etc.

92 source files modified + regenerated .rubocop_todo.yml.

All 299 specs pass (4 pending performance benchmarks that need PERF_CHECK env var).

Eliminates ~76K useless Store registrations during XMI parsing.
WeakRef/Store overhead was consuming 32-70% of total CPU time.
Class instance variables don't inherit, so every Serializable
subclass needs skip_reference_registration explicitly.

Also regenerate .rubocop_todo.yml after adding to 92 source files.
@ronaldtse ronaldtse merged commit d2f1b9f into main May 20, 2026
14 checks 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.

1 participant