cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Berin Loritsch <>
Subject Excalibur performance enhancements
Date Fri, 21 Dec 2001 18:43:11 GMT
Excalibur 4.1 will have a number of performance enhancements that will be
included in the scratchpad project.  Among the improvements will be improved
pool implementations, instrumentation of Components, and an improved
ComponentManager (that is LogEnabled clean).

Already, the pools are a bit quicker do to a change from using ArrayList to
store the pool references to using VariableSizeBuffer (the new Buffer
classes in org.apache.avalon.excalibur.collections).  These are *very*
efficient classes.  In some informal tests using LinkedList, Arraylist,
CircularBuffer (since renamed and conformed to the new Buffer interface)
the Buffer implementation outperformed the JDK List classes by a healthy
margin.  If you are using Lists to merely buffer classes and do not
need to index individual instances, use the Excalibur Buffer classes.
If you need to use Lists, use the ArrayList.  In our tests, ArrayList
does exhibit a linear degredation of performance compared to LinkedList,
however it isn't until you have over 600 elements in the list until
the ArrayList becomes less efficient than LinkedList.

Expect to see the beginnings of the event based management system (The queues
are already implemented), and some new pool implementations that are dumb
by themselves, but when managed by a PoolController asynchronously resources
can be managed in a much more efficient manner.

After Excalibur 4.1 is released, I would recommend experimenting with the
Excalibur Scratchpad in Cocoon Scratchpad.  It will require a vote to
promote the new stuff to the production jar, so it would be worth the
testing in Cocoon.

The benefit of all this is also the systemic change from managing change
in inline code vs. managing change with an event based architecture.  My
estimation is that the new system will make Components easier to write,
maintain, and the overall measured and perceived performance of the critical
request path will increase significantly--especially under load.

As I am working on this in a step by step manner, if you want to see it
sooner, I will appreciate contributions.... :)

The point of this email is to get your tastebuds salivating over some new
and improved code.  Don't worry, the core Avalon Excalibur jar will work with
Cocoon as is--allowing Cocoon to upgrade leisurely.

If you see an Avalon Excalibur Scratchpad jar in the Cocoon Scratchpad area,
you will know that I have begun to test some of the new functionality. :P

One of the side effects will be that the pools will no longer have debug
messages in them due to the fact that they do slow things down and the
pools will be well tested anyways.


"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin

To unsubscribe, e-mail:
For additional commands, email:

View raw message