Affects Version/s: Adobe Flex SDK 4.5 (Release)
Fix Version/s: None
Component/s: Data Binding
Environment:Affected OS(s): All OS Platforms
Affected OS(s): All OS Platforms
Language Found: English
Steps to reproduce:
1. Watch DescribeTypeCache rack up time in parsing xml of classes, which don't change at runtime.
Many of the Binding-related functions involved in initialization are largely methods that calculate values that aren't dependent on state. This means that they can be calculated pre-compile-time, in some sort of generated class, thereby increasing startup time performance. There is no need to calculate these values before hand.
Specifically, in mx.binding.BindabilityInfo, when mx.binding.PropertyWatcher-and-related call Watcher#updateParent, they calculate the DescribeTypeCache, and the events for the class, by processing the metadata from the class. This information does not change at runtime. It can and should be either processed by the compiler, which could spit out a generated class of the pre-computed values, or the properties in these classes that are "private" and that store the values (BindabilityInfo#typeDescription, BindabilityInfo#classChangeEvents, BindabilityInfo#childChangeEvents, and DescribeTypeCache#typeCache) should be made "mx_internal". This would allow us to precompute them using our own methods if it seems too much work to solve this problem with the compiler.
There are easily 30+ classes that must go through this "DescribeType" phase in an application, and this requires significant resources to calculate. It should be precomputed, or the properties should be "mx_interal" so we can figure out our own means for adding the precomputed values to the cache.
Please let me know if you could make this change immediately. It should only take 5 minutes to make the properties mx_internal, and no harm would be done.
Thanks so much.
mx_internal properties, so we can precalculate values and add them to the cache as a mixin.
Workaround (if any):
There is no work around. This should be a very simple enhancement and should be easily included in the Flex 4 release.