Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
9.0.0-M5
-
None
-
None
Description
While investigating performance issues with metadata in WICKET-6771, I discovered that significant performance gains can be achieved by separating models, behaviors, and metadata into separate fields.
Currently, all three types of data are stored in a single, untyped field Component.data. The idea is to minimize memory overhead by creating as few objects as possible.
If a model or a single behavior or metadata is added, data stores only a reference to the object. When additional data is added, the reference becomes an array.
This is the most memory-efficient way to store these three types of data. But it comes with a cost: code to manipulate that data structure is complex and not as efficient because it has to take all possible combinations of data into account.
I suggest introducing 3 separate fields for the 3 types of data, trading a little bit of memory for reduced complexity and performance gains.
Attachments
Attachments
Issue Links
- is cloned by
-
WICKET-6790 CLONE - Separate model, behaviors and metadata into separate fields
- Resolved
- relates to
-
WICKET-6771 Performance issues accessing component metadata while iterating
- Resolved