Sylvain Wallez wrote:
>
> Carsten Ziegeler wrote:
>
> >Sylvain Wallez wrote:
> >
> >
> >>The performance problem is that among all implementations of
> Source that
> >>I know of (URLSource, FileSource, SlideSource, BlobSource, XMLDBSource,
> >>SitemapSource and CVSSource), only one actually needs to be disposed
> >>(SitemapSource).
> >>
> >>So having a isSelectable()-select()-release() cycle to call a
> >>factory.release() that does nothing most of the time seems CPU
> >>waste to me.
> >>
> >>Now I agree that theoretically releasing is the factory's job. So, in
> >>order to lower my performance fears, what about removing the
> >>isSelectable() call in SourceResolverImpl.release() ? It would
> remove an
> >>unnecessary search in the ServiceSelector HashMaps, considering also
> >>that the select() that follows this isSelectable() is surrounded by a
> >>try/catch.
> >>
> >>
> >>
> >Wow, entering twilight zone...believe it or not, I just thought of this
> >yesterday evening when I tried to think about some general performance
> >improvements.
> >Actually, I wasn't sure about it, because if we are honest, it's a hack.
> >
>
> Why is it a hack ? Calling isSelectable() is only of real use if the
> probability for it to return false is important and if you can make some
> corrective actions in that case.
>
Ok, hack is perhaps a too hard formulated. Anyway, I think we can live with
it
and change it.

> >And throwing/catching exceptions is also a little bit time consuming.
> >But as a (better?) solution I would like to make a factory for the
> >URLSource as well - so all sources are handled by a factory and the
> >select() call will always return a factory - and this will avoid
> >the isSelectable() call.
> >What do you think about this?
> >
>
> Twilight zone again ;-)
> I wanted to raise this issue just after we finished with that one,
> because it seemed to me unclean for URLSource to be managed directly by
> the SourceResolver and not through a factory.
>
> >Ah, btw you're right that the Source object should return a Collection
> >instead of an Iterator for the children - I will fix that, too, asap.
> >
>
> Cool. But I'm still not that happy with these methods being on Source
> itself. What about TraversableSource or HierarchicalSource (I have this
> last one ready on my PC with collections) ?
>
I really don't like all these instanceof tests and I think that a source
can have children is very common. So if you deal with sources you always
end up with a test if this source contains children or not.
I think this test is much more cleaner/nicer/whatever if I can directly
query the source. An instanceof test for this reason is not appropriate.

Carsten


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

Reply via email to