Details
-
Type: New Feature
-
Status: Open
-
Priority: Major
-
Resolution: Unresolved
-
Affects Version/s: 3.2
-
Fix Version/s: None
-
Component/s: ACE-Components
-
Labels:None
-
Environment:ACE components
Description
Looking at the cumulative size of the ACE .class files, I found a simple way to make a significant reduction, which might reduce the memory working set by a noticeable amount.
Total size of all ACE classes:
3,367,560 bytes
Portion related to org.icefaces.ace.component
2,798,857 bytes
Portion related to org.icefaces.ace.component, after reducing Base class getter / setter method bodies to empty
2,136,942 bytes
[650 KB savings]
Portion related to org.icefaces.ace.component, leaving methods alone but omitting Tag classes
2,437,353 bytes
If we refactor the generated getter/setter code to not generate the full method bodies for every single property, but rather generate the primitive and object versions once per component and make every property use those, then we can probably reduce the class size by ~600KB, which is out of a total of ~3,000 KB that actually gets class loaded. That's 20%. Depending how the JIT works, that's 20% less working set memory used.
Total size of all ACE classes:
3,367,560 bytes
Portion related to org.icefaces.ace.component
2,798,857 bytes
Portion related to org.icefaces.ace.component, after reducing Base class getter / setter method bodies to empty
2,136,942 bytes
[650 KB savings]
Portion related to org.icefaces.ace.component, leaving methods alone but omitting Tag classes
2,437,353 bytes
If we refactor the generated getter/setter code to not generate the full method bodies for every single property, but rather generate the primitive and object versions once per component and make every property use those, then we can probably reduce the class size by ~600KB, which is out of a total of ~3,000 KB that actually gets class loaded. That's 20%. Depending how the JIT works, that's 20% less working set memory used.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion