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]

Reply via email to