Explanations:
IntrospectorGenerator.java - generation speed.txt
===================================
The generator uses the find() method to lookup MethodWrapper objects
when generating IntrospectorImpl - the old method would call
toString() on the methodWrapper for equality checks, which is actually
very expensive because it involves a long call through the JType
chain.
This is no longer as crucial because of the JVMIntrospector (before,
this was slowing down page refreshes in hosted mode quite a lot).
Nevertheless:
project 1 -
with:
[java] Found 218 introspectable types.
[java] Generation gwit - 985 ms
without:
[java] Found 218 introspectable types.
[java] Generation gwit - 27903 ms
project 2 -
with:
[java] Found 140 introspectable types.
[java] Generation gwit - 710 ms
without:
[java] Found 140 introspectable types.
[java] Generation gwit - 18072 ms
IntrospectorGenerator.java - descriptor lookup optimisation.txt
=============================================
If you're using descriptor lookup a lot (for more than UI<>dataobject
binding - my projects use it as part of a more general dataobject
persistence system), the instanceof() calls used for lookup become
very expensive. This optimisation caches lookup by class - except for
SelfDescribed objects, which shouldn't have descriptors cached.
Minor patches - explanations in the patch code:
==================================
TextBox.java - change event not being fired with new==null.txt
Field.java - useful constructor.txt
Binding.java - minor bug.txt