I saw very similar results: This is on a Dual Core Intel iMac, running Resin. The command is ab -c 50 -n 1000 (Do 1000 requests 50 at a time) and the DAO is in memory (hashmap essentially).
Two separate pages, but doing the exact same operations: But this time, not with JSTL, but with Quercus (Caucho's cleanroom php implementation, decent amount of extra code) as the view: jgagner$ ab -c 50 -n 1000 http://localhost:8080/wwdemo/employee.action?action=list This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Finished 1000 requests Server Software: Resin/3.0.18 Server Hostname: localhost Server Port: 8080 Document Path: /wwdemo/employee.action?action=list Document Length: 2137 bytes Concurrency Level: 50 Time taken for tests: 1.483 seconds Complete requests: 1000 Failed requests: 0 Broken pipe errors: 0 Total transferred: 2325336 bytes HTML transferred: 2196836 bytes Requests per second: 674.31 [#/sec] (mean) Time per request: 74.15 [ms] (mean) Time per request: 1.48 [ms] (mean, across all concurrent requests) Transfer rate: 1567.99 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.0 0 16 Processing: 7 71 57.3 56 388 Waiting: 4 71 57.3 56 388 Total: 7 72 57.2 56 388 Percentage of the requests served within a certain time (ms) 50% 56 66% 70 75% 81 80% 89 90% 124 95% 189 98% 294 99% 310 100% 388 (last request) With webwork tags: jgagner$ ab -c 50 -n 1000 "http://localhost:8080/wwdemo/employee.action?action=edit&id=1" This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Finished 1000 requests Server Software: Resin/3.0.18 Server Hostname: localhost Server Port: 8080 Document Path: /wwdemo/employee.action?action=edit&id=1 Document Length: 1957 bytes Concurrency Level: 50 Time taken for tests: 74.111 seconds Complete requests: 1000 Failed requests: 0 Broken pipe errors: 0 Total transferred: 2176000 bytes HTML transferred: 1957000 bytes Requests per second: 13.49 [#/sec] (mean) Time per request: 3705.55 [ms] (mean) Time per request: 74.11 [ms] (mean, across all concurrent requests) Transfer rate: 29.36 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.2 0 5 Processing: 311 3616 454.4 3597 5506 Waiting: 310 3616 454.5 3596 5506 Total: 311 3616 454.4 3597 5506 Percentage of the requests served within a certain time (ms) 50% 3597 66% 3723 75% 3793 80% 3848 90% 3993 95% 4168 98% 4843 99% 5247 100% 5506 (last request) Yes, that is 674 (Quercus PHP View ) vs. 13 (Webwork Tags) Something is definitly broken with the webwork tags. On 5/15/06, Larry Meadors <[EMAIL PROTECTED]> wrote:
OK, I did this tutorial thing that was like webwork for struts devs. Then last week, a friend of mine did a little load test with it. We discovered that when I use this code on a form: === <w:form action="employee.action?action=save" theme="xhtml"> <w:hidden name="employee.employeeId"/> <w:textfield name="employee.firstName" label="First Name" size="40" maxlength="40"/> <w:textfield name="employee.lastName" label="Last Name" size="40" maxlength="40"/> <w:textfield name="employee.age" label="Age" size="3" maxlength="3"/> <w:select label="Department" name="employee.departmentId" list="departmentList" listKey="departmentId" listValue="name" /> <w:submit name="action" value="save" cssClass="butStnd"/> <w:submit name="action" value="cancel" cssClass="butStnd"/> </w:form> === We were getting about 8-10 pages per second. That was a bit of a red flag, because another page in the tutorial was giving us more like 400 pages per second...same action class, just a different view. So, I replaced the form tag in the code above with theme="simple", and still got the same performance - 8-10 pages per second. Nex, I replaced it with this: === <form action="employee.action?action=save"> <input type="hidden" name="employee.employeeId" value="${employee.employeeId}"/> <table> <tr> <td>First Name</td> <td><input type="text" name="employee.firstName" value="${employee.firstName}"/></td> </tr> <tr> <td>Last Name</td> <td><input type="text" name="employee.lastName" value="${employee.lastName}"/></td> </tr> <tr> <td>Department</td> <td> <select name="employee.departmentId"> <c:forEach var="dept" items="${departmentList}"> <c:choose> <c:when test="${employee.departmentId eq dept.departmentId}"> <option selected="selected" value="${dept.departmentId}">${dept.name}</option> </c:when> <c:otherwise> <option value="${dept.departmentId}">${dept.name}</option> </c:otherwise> </c:choose> </c:forEach> </select> </td> </tr> <tr> <td /> <td> <input type="button" value="Save" onclick="save(this.form)" /> <input type="button" value="Cancel" onclick="cancel(this.form)" /> </td> </tr> </table> </form> === Now, I get 400-500 pages per second. Please, please, please tell me I am missing something here, like a setting to pleaseMakeMyAppsPerformanceSuck="false" somewhere. ;-) Larry --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]