Community
Participate
Working Groups
In our parsers we can use the Version/VersionRange factory methods instead of direcly using the constructors to reduce memory footprint. see bug 272386. John also suggests that we might directly optimize for null version/version ranges in our parsers as we have the appropriate context. In our writers we're currently writing many zero versions and version ranges; we can omit writing versions/versionranges in these cases. The net result will reduce the file size and subsequently speed up parsing.
Do you want any help with this?
Go for it.
The writer must not be changed for 3.5 because people will use 3.5 to generate sites to be consumed for 3.4 and the resulting site will be unusable with 3.4! The only change I could see happening for 3.5 are: - use the factory method in the parser - prepare the reader to deal with cases where we eventually don't have empty ranges But I don't even see any of those change must fix / stop ship in the light of the rest of the work we have (e.g. improving the director application) and the risk / reward is unclear to me. Unsetting milestone for now. Feel free to convince me otherwise.
What we really need here are some concrete measurements. If we knew a particular change would save X KB/MB of memory for a particular scenario, that would help motivate whether the change is worthwhile. If I do some more performance work this afternoon I may try some simple optimizations to see what kind of improvement they yield.
Created attachment 132307 [details] Simple optimization
This simple optimization helps quite a bit. I ran Bug254481dataSet1 with and without this optimization and found: Before: Version: 21,313 instances, 1,761,328 bytes VersionRange: 7,333 instances, 1,222,648 bytes After: Version: 14,956 instances, 1,354,480 bytes VersionRange: 5,811 instances, 1,076,526 bytes Overall the memory retained by the Profile instance decreased by 445,280 bytes. I think this is a worthwhile optimization so I released it to HEAD.
John, do we want more optimizations in for 3.5 or should this be moved to 3.6?
Closing for now, since we don't intend to do anything.