Return-Path: Mailing-List: contact tapestry-user-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tapestry-user@jakarta.apache.org Received: (qmail 64414 invoked from network); 27 Aug 2003 12:59:07 -0000 Received: from unknown (HELO mail.mergitech.com) (198.167.161.43) by daedalus.apache.org with SMTP; 27 Aug 2003 12:59:07 -0000 Received: from adam ([]) by mail.mergitech.com (Merak 5.1.2) with SMTP id EZL73735 for ; Wed, 27 Aug 2003 09:55:10 -0300 From: "Adam Greene" To: "Tapestry users" Subject: RE: Tapestry under low bandwidth conditions Date: Wed, 27 Aug 2003 09:57:15 -0300 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0) In-Reply-To: <3F4BFFCC.8040504@pixie.co.za> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Importance: Normal X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N Tapestry uses the default Servlet Stream, which is a chunked stream, and sends in blocks. So, yes, if you want to speed up render time, you could render to a buffer and then send, but I don't think you will find much of a speed gain as it will still have to send the same amount of information, just it will render fast and wait slow. -----Original Message----- From: Evert Hoff [mailto:evert.hoff@pixie.co.za] Sent: Tuesday, August 26, 2003 9:48 PM To: tapestry-user@jakarta.apache.org Subject: Tapestry under low bandwidth conditions Hi, We are using Tapestry-2.2-beta-2 at PickACourier (www.pickacourier.com). It seems to me that Tapestry behaves badly under low bandwidth conditions. Here is a test that I did - I first used an ISP that currently has low bandwidth from South Africa to the UK, then I switched to another ISP that has better bandwidth: (Render time is shown in milliseconds) ======== ISP 1 - Low Bandwidth ============================================ 2003-08-27 00:20:31,503 INFO [STDOUT] Render time : 81062 for page Home Shipper=0 2003-08-27 00:22:23,567 INFO [STDOUT] Render time : 50219 for page Home Shipper=0 2003-08-27 00:23:13,552 INFO [STDOUT] Render time : 18 for page Login Shipper=0 2003-08-27 00:23:49,421 INFO [STDOUT] Render time : 50 for page ShipperHome Shipper=1 2003-08-27 00:24:58,166 INFO [STDOUT] Render time : 43211 for page EnterSourceAddress Shipper=1 2003-08-27 00:26:08,778 INFO [STDOUT] Render time : 28638 for page EnterSourceAddress Shipper=1 2003-08-27 00:27:58,621 INFO [STDOUT] Render time : 58048 for page EnterDestinationAddress Shipper=1 2003-08-27 00:29:24,626 INFO [STDOUT] Render time : 48110 for page EnterDestinationAddress Shipper=1 2003-08-27 00:31:08,531 INFO [STDOUT] Render time : 66825 for page EnterPackages Shipper=1 2003-08-27 00:32:26,890 INFO [STDOUT] Render time : 48455 for page EnterPackages Shipper=1 2003-08-27 00:33:08,751 INFO [STDOUT] Render time : 188 for page EnterDeliveryTimes Shipper=1 2003-08-27 00:33:53,396 INFO [STDOUT] Render time : 10765 for page EnterTimes Shipper=1 2003-08-27 00:37:48,770 INFO [STDOUT] Render time : 84026 for page IdentifiedCouriers Shipper=1 2003-08-27 00:41:46,771 INFO [STDOUT] Render time : 10 for page RequestFinished Shipper=1 2003-08-27 00:42:41,101 INFO [STDOUT] Render time : 42 for page ShipperQuoteMonitor Shipper=1 2003-08-27 00:55:42,457 INFO [STDOUT] Render time : 60579 for page EnterSourceAddress Shipper=1 2003-08-27 00:57:39,441 INFO [STDOUT] Render time : 57218 for page EnterSourceAddress Shipper=1 2003-08-27 01:00:27,932 INFO [STDOUT] Render time : 47899 for page EnterDestinationAddress Shipper=1 2003-08-27 01:03:24,970 INFO [STDOUT] Render time : 46305 for page EnterDestinationAddress Shipper=1 2003-08-27 01:05:19,543 INFO [STDOUT] Render time : 49992 for page EnterDestinationAddress Shipper=1 2003-08-27 01:06:15,870 INFO [STDOUT] Render time : 26728 for page EnterSourceAddress Shipper=1 2003-08-27 01:13:22,663 INFO [STDOUT] Render time : 46686 for page EnterDestinationAddress Shipper=1 2003-08-27 01:14:44,241 INFO [STDOUT] Render time : 47526 for page EnterPackages Shipper=1 ======== ISP 2 - Better Bandwidth ============================================ 2003-08-27 01:20:38,854 INFO [STDOUT] Render time : 5705 for page Home Shipper=0 2003-08-27 01:20:52,266 INFO [STDOUT] Render time : 21 for page Login Shipper=0 2003-08-27 01:21:05,304 INFO [STDOUT] Render time : 92 for page CourierHome Courier=1 2003-08-27 01:21:13,761 INFO [STDOUT] Render time : 6 for page Logout Shipper=0 2003-08-27 01:21:15,993 INFO [STDOUT] Render time : 34 for page Home Shipper=0 2003-08-27 01:21:29,000 INFO [STDOUT] Render time : 5 for page Login Shipper=0 2003-08-27 01:21:41,702 INFO [STDOUT] Render time : 23 for page ShipperHome Shipper=1 2003-08-27 01:21:53,625 INFO [STDOUT] Render time : 5874 for page EnterSourceAddress Shipper=1 2003-08-27 01:21:59,184 INFO [STDOUT] Render time : 70 for page EnterSourceAddress Shipper=1 2003-08-27 01:22:15,505 INFO [STDOUT] Render time : 5327 for page EnterDestinationAddress Shipper=1 2003-08-27 01:22:21,562 INFO [STDOUT] Render time : 67 for page EnterDestinationAddress Shipper=1 2003-08-27 01:22:38,242 INFO [STDOUT] Render time : 4549 for page EnterPackages Shipper=1 2003-08-27 01:22:45,130 INFO [STDOUT] Render time : 121 for page EnterPackages Shipper=1 2003-08-27 01:23:00,452 INFO [STDOUT] Render time : 46 for page EnterDeliveryTimes Shipper=1 2003-08-27 01:23:06,486 INFO [STDOUT] Render time : 44 for page EnterTimes Shipper=1 2003-08-27 01:23:17,916 INFO [STDOUT] Render time : 3821 for page IdentifiedCouriers Shipper=1 2003-08-27 01:23:35,299 INFO [STDOUT] Render time : 6 for page RequestFinished Shipper=1 2003-08-27 01:26:26,313 INFO [STDOUT] Render time : 47 for page ShipperQuoteMonitor Shipper=1 ============================================================== What I find strange is that the simple pages (Login, ShipperHome) rendered quickly with both ISPs, but the large pages (typically ones that contain tabs) take exponentially longer. I assume that Tapestry writes the response to the output stream as the client pulls the output stream from the server. Thus, if the client pulls more slowly, then the response is not generated quickly, but generated as portions of the page are requested. Do you think it might improve performance if I change Tapestry to first write the entire response to a buffer and then serve the client from the buffer? Regards, Evert --------------------------------------------------------------------- To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org For additional commands, e-mail: tapestry-user-help@jakarta.apache.org