After doing some more profiling I think we can massively reduce startup time 
for a large number of beans. 

At the moment we add an @New bean for every managed bean, while according to 
the spec I think this is only necessary for beans that are actually injected 
into an @New injection point. I performed a quick test where I removed the @New 
beans (and skipped the tests) and in the 5000 bean case it reduced the AS 
startup time form 90s to 60s (this is actually a 50% speedup as the AS takes 
30s to start with a 5000 class deployment without weld), and reduces the memory 
usage by a further 20Mb (bringing the total saving so far to 100Mb). This 
speedup will probably be less for smaller deployment, because parts of the 
startup process are O(n^2) on the number of beans (in particular 
TypeSafeResolver.findMatching).

Is my interpretation of the spec correct? The spec actually says that these 
@New beans that do not match an injection point still exist but are disabled, 
which as far as I can tell is the same as just not creating them. 


Stuart
_______________________________________________
weld-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-dev

Reply via email to