jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Meschberger <fmesc...@gmail.com>
Subject Re: [jr3] MicroKernel prototype
Date Wed, 17 Mar 2010 12:14:21 GMT

On 17.03.2010 12:19, Thomas Müller wrote:
> Hi,
>> premature optimization
> Sure, premature optimization should be avoided. But sometimes you need
> to validate that a certain architecture / algorithm doesn't result in
> very slow or unmaintainable code. I mean, that's the reason to write a
> prototype: so you can actually test it.
>> clean and easy to understand architecture
> Yes, make it as easy as possible. For example, I didn't implement a
> CachingHierarchyManager. I was a bit afraid it will be a problem, but
> it looks like it's not. That's good.
>> loose weight
> You probably mean "speed up".

Yeah, took the liberty of using a metaphor ;-)

On the other hand, removing unneeded, duplicate code is also something
worth while...

> Yes, it's almost always possible to
> improve performance a bit by tweaking the implementation. But it's
> usually very hard to "remove code" after it has been added and used.

Depends. If you use proper encapsulation separating public and private
parts, you are completely free restructuring the private part - as long
as you stick with the general contract ...

This is why I am so keen on separating internal and external parts ! Its
expensive to begin with but gives far more freedom afterwards.

>> the prototype currently probably misses tasks that Jackrabbit currently does
> Sure. But I don't know any that would account for big performance or
> architectural problems. Shareable nodes was one such case (without
> shareable nodes the prototype wouldn't need NodeState).
>> data validation against the node types
> Nobody uses node types. Just joking. The test case doesn't use node
> types so I don't think this is the reason why the prototype is so much
> faster. But there might be other things I forgot.

Well, ehrm, unless Jackrabbit handles "nt:unstructured" specially, you
*always* use node types ;-)


View raw message