2009/1/11 Matthias Wessendorf <mat...@apache.org>:
> On Sun, Jan 11, 2009 at 4:46 AM, Mario Ivankovits <ma...@ops.co.at> wrote:
>
> ;-) I really hate to wait on the boot-up.
> :-)
>
> --
> Matthias Wessendorf
>
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> twitter: http://twitter.com/mwessendorf
>

Last week I've been playing around with a (non-Reflection) classpath
scanner of my own. It's actually not that hard to write (if you have
the class file format specification somewhere for reference) and my
experience until now is that it's much faster than using Reflection.

I have a test webapp which I deploy on Tomcat. This webapp contains
about 650 classes.

With reflection, it takes about 1500ms to read them all, with my
custom home brewn scanner, it only takes between 300ms and 350ms.
The only performance tweak I have made was a BufferedInputStream, so
I'm sure there is enough room for other improvements (maybe some
fork-join algorithm to support parallelism).
I haven't really tested memory footprint yet, but 650 classes is still
not that much.

Current status (I do this in spare time ;-)):
- Expose the parsed classes in a developer-friendly format, instead of
the raw class file format. (it's like a lite version of the Reflection
API, to keep it fast).
- Read classes in jars.
- Test for possible ClassLoader issues.
- Allow users to specify their own searchpaths.
- Package filtering.
- Search/filter API to allow the developer to only load classes that
implement some interface or are tagged with an annotation.

If I'm satisfied with the results, we can see if it may fit into
MyFaces (or maybe a reusable utility, since there are other projects
that need to scan for annotations).
It's not that much code and this way there is no need for an
additional dependency.

I'll keep you guys informed.

Regards,

/Jan-Kees

Reply via email to