I am not arguing that Tapestry doesn't have a performance problem under high
loads. I dont know, I am developing for an Intranet environment with a small
number of users.
I do vaguely remember someone, who wrote Sun PetStore in Tapestry and said
it hit a bit brick wall under heavy loads. Whether this was Tapestry, a poor
implementation or a database issue I don't know.
What I can tell you about my experience which was Servlet/JSP MVC style
application with an in-memory database cache.
Server: 500MB, 2 CPU, NT Server, Tomcat 3.3, JDK 1.2.x
Clients: 4-5 clients running MS WebStress Test.
1. a single call System.gc() - was crippling performance, with this
removed we saw a 10x improvement
2. a single string concatenation tight CORBA message processing loop,
occupied 1 CPU at 100% utilization
3. excessive number of client request handling CORBA threads impacted
performance (3 was optimal number)
4. replacing Vectors with ArrayLists in a HTML Table object, saw a
100% performance improvement. While this code as suspected of
causing problems, it was only detectable under heavy multi-threaded
loads
4. using CSS classes in HTML pages instead of specifing fonts
in table cells significantly improved render times, some 30-50%
5. replacing LinkedList with a ArrayList in a cached ResultSet gave
a significant performance improvement, LinkedList sequential
access really hurt
5. excessively board synchonization causes some nasty blocking
6. Moving from JDK 1.2.x to 1.3 saw a 100% performance improvement
Tapestry is unusual in that it pools pages which are quite heavy weight
objects. JSP/Servlets have a relatively short rendering pipeline, which good
for performance, but can't handle a complex design space well as Tapestry
can. With this page pooling code there could be potential for performance
issues, with synchronization, blocking and object allocation / memory churn.
From the code I have seen Howard write it is exceptionally good
(significantly better than mine), with very good attention to detail on
these issues.
There was a good article on TSS recently with regard to Borland BES
performance. Borland were using JStore as the database, because Oracles JDBC
driver was doing rediculous amounts over memory allocation and they could
identify there own performance issues with this JDBC driver in the same JVM.
This is not trivial stuff, but it is very good to do.
regards Malcolm
Subject: Re: [Tapestry-contrib] Profiling Tapestry
Date: Fri, 20 Dec 2002 15:26:03 -0000
Post by Howard M. Lewis ShipThis may also mandate that Tapestry only support utf-8 as a character
encoding.
That would be bad.
I'm looking at the Resin source under com.caucho.vfs for ideias and
they seem to handle most of the difficult stuff, but java.io.* is not
my cup of tea.
Can you give us an overview of the Tapestry IO process?
I really don't know much about Tapestry guts.
There could be other ideias worth exploring, like DOM parsers for
example.
Best regards,
Luis Neves
-------------------------------------------------------
This SF.NET email is sponsored by: The Best Geek Holiday Gifts!
Time is running out! Thinkgeek.com has the coolest gifts for
your favorite geek. Let your fingers do the typing. Visit Now.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/
_______________________________________________
Tapestry-contrib mailing list
https://lists.sourceforge.net/lists/listinfo/tapestry-contrib
_________________________________________________________________
MSN 8 helps eliminate e-mail viruses. Get 3 months FREE*.
http://join.msn.com/?page=features/virus&xAPID=42&PS=47575&PI=7324&DI=7474&SU=
http://www.hotmail.msn.com/cgi-bin/getmsg&HL=1216hotmailtaglines_virusprotection_3mf
-------------------------------------------------------
This SF.NET email is sponsored by: The Best Geek Holiday Gifts!
Time is running out! Thinkgeek.com has the coolest gifts for
your favorite geek. Let your fingers do the typing. Visit Now.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/