James, Thanks for taking the time to explain your stance on these things. I like your experimentation approach. I will play around with some things and get back to you on that in a week or so.
Rob Yates (who is on paternity leave right now so likely can't respond right now) has performed some performance analysis of Abdera with Axiom relative to Rome (which separates the model impl from the parsing). Parsing just titles and links from Tim Bray's feed, Rome used 6+MB of RAM and over 600 million CPU instructions; Abdera with Axiom used around 700k of RAM and around 90 million CPU instructions. The secret of the performance improvement was in the use of Axiom and StAX -- that is, to say, pull parsing and lazy creation of the object model.
These performance metrics are most likely a result of JDOM vs. Axiom/StAX and not due to the model being separated from the parsing. Do you happen to know what tool Rob used to determine CPU instructions? I would imagine it would vary due to the nature of JIT.
I had originally started down the path you are suggesting, this is better. Please, run some performance analysis of your own. Look at the stack traces. Compare them with those of Rome. I think you'll be surprised at how much kruft is *not* there *because* of the direct dependencies on Axiom and StAX.
I think API cleanliness is orthogonal to performance. Here are my questions: 1) Is the API uglier or simpler because of dependencies on Axiom and StAX? 2) Is the API higher performance due to dependencies on Axiom and StAX? I am arguing that 1) is uglier. Not going to argue 2. unless I run my own performance tests like you suggested. One last question, JSON support. Have you and smackman made any progress on JSON serialization? http://smackman.com/2006/05/08/applicationatomjson/ How would suggest atom+json serialization be implemented? Joe
