Haven't yet wired it in, but hacked all weekend on finally killing our JAXB 
performance overhead.  The Java EE descriptors change only every so many years 
so it makes zero sense to pay 500ms to 1+s *per boot* on JAXB discovering and 
processing our descriptor tree.  We pay both reflection and class generation 
overhead before it's ready to actually parse anything.

I forked a 4 year old project, SXC, and hammered on it till it did exactly what 
I wanted -- a 100% static code for all xml parsing, no instance variables, no 
indirection.  Just one big static logic tree.

Result is it's a 70% reduction -- i.e. xml parsing should take about 30% of the 
time it took.  The number of classes in memory should *severely* go down as 
well.  We load 5,000 - 6,000 classes when TomEE boots and nearly 4,000 are JAXB 
generated accessors.  So that's 4000 more classes a user will be able to have 
in their app before running out of perm gen -- slightly less as JAXB generated 
accessors are very small.

Not wired in yet, but it's looking really good.


-David

Reply via email to