hi chris

i've taken a quick look and this seems interesting. i don't have time right now to take a good look but hopefully i will before too long.

if you are thinking about putting something together that's beanutils compatible then i think that it's a good idea for me to give you some idea where i see things going. beanutils is in the process of being beanified. the booch utilities are now backed by pseudo-singletons and the functionality implemented in concrete classes. a lot of the functionality will most likely be factored out so that advanced users can hook into the api with alternative implementation strategies.

though i think most folks are very, very keen to keep the core dependencies to a minimum (no more than we have now). i think that it's inevitable that we'll end up with an 'optional' package containing implementations with a wider range of dependencies. that'd allow a fast implementation using cglib to be added without the issue of adding cglib as a core dependency arising.

i'm also interested to see if this technology might be useful to speed up other components which make extensive use of reflective (such as betwixt).

- robert

On Friday, August 22, 2003, at 01:52 AM, Chris Nokleberg wrote:

Craig R. McClanahan wrote:
Results for PropertyUtils (no type conversions):
===============================================

Method         Dest Orig Dura #1 Dura #2
-------------- ---- ---- ------- -------

copyProperties bean bean   5,595   5,107
copyProperties dyna bean   4,567   4,126
copyProperties bean dyna   3,791   3,675
copyProperties dyna dyna     844     681
copyProperties bean map    3,938   3,755
copyProperties dyna map      931     772

I modified the PropertyUtils benchmark to use CGLIB:


Method         Dest Orig CGLIB? Duration
-------------- ---- ---- ------ --------

copyProperties bean bean     no    4,871
copyProperties bean bean    yes      560
copyProperties bean  map     no    2,895
copyProperties bean  map    yes      461

About a 7x speedup (JDK 1.4.1, earlier JDKs will have greater speedup).
This is implemented in the simplest possible way using code already in
CGLIB; greater speedups could be achieved by writing more specialized
code, but I'd guess less than another 2x faster.

BeanUtils initially wouldn't show the same improvement, since it is
doing a bunch of other stuff too, although some of that could be
optimized eventually--indexed/mapped properties, etc.

I'll probably be putting together some sort of BeanUtils-like API in
CGLIB. I'll make sure that it will be easy for BeanUtils to hook into if
you decide it's something you want to do. If anyone has specific
thoughts as to what is most needed, feel free to write me or better yet
join the cglib-devel mailing list (http://cglib.sf.net/).

Thanks,
Chris



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to