Does the app include any model files? If so, can you attach them?
On Wednesday, September 14, 2011 10:49:48 AM UTC-4, Ross Peoples wrote: > > This is by no means an academic benchmark, but I was doing some testing > with RPC methods and decided to come up with a benchmark to get some average > times for the time it takes to make several types of RPC calls, and if one > protocol has a performance advantage over another. I tested JSON-RPC and > XML-RPC. I also tested using sessions, and using SSL to see how those things > affect performance. I will show all the code used, along with a description > of the testing environment later, but right now, here are the results: > > ####################################### > ##### HTTP with Sessions > ####################################### > > > ADD TWO NUMBERS > ================================== > JSON-RPC: 47.74 ms > XML-RPC: 46.54 ms > Result: XML won by: 1.20 ms > > > CONCATENATE TWO STRINGS > ================================== > JSON-RPC: 45.09 ms > XML-RPC: 44.66 ms > Result: XML won by: 0.43 ms > > > HANDLE BOOLEAN VALUE > ================================== > JSON-RPC: 45.35 ms > XML-RPC: 45.43 ms > Result: JSON won by: 0.08 ms > > > HANDLE DATETIME VALUE > ================================== > JSON-RPC: 46.13 ms > XML-RPC: 45.52 ms > Result: XML won by: 0.61 ms > > > HANDLE COMPLEX OBJECTS > ================================== > JSON-RPC: 51.63 ms > XML-RPC: 51.19 ms > Result: XML won by: 0.44 ms > > > FINAL RESULTS > ================================== > JSON-RPC Average Time: 47.19 ms > JSON-RPC Total Time Taken: 8731.09 ms > XML-RPC Average Time: 46.67 ms > XML-RPC Total Time Taken: 8682.93 ms > Result: XML won by: 0.52 ms > > > ####################################### > ##### HTTP without Sessions > ####################################### > > This was done by placing "session.forget(response)" in the call() method. > > > ADD TWO NUMBERS > ================================== > JSON-RPC: 49.10 ms > XML-RPC: 50.45 ms > Result: JSON won by: 1.35 ms > > > CONCATENATE TWO STRINGS > ================================== > JSON-RPC: 45.81 ms > XML-RPC: 49.13 ms > Result: JSON won by: 3.32 ms > > > HANDLE BOOLEAN VALUE > ================================== > JSON-RPC: 45.50 ms > XML-RPC: 49.44 ms > Result: JSON won by: 3.94 ms > > > HANDLE DATETIME VALUE > ================================== > JSON-RPC: 45.97 ms > XML-RPC: 49.08 ms > Result: JSON won by: 3.11 ms > > > HANDLE COMPLEX OBJECTS > ================================== > JSON-RPC: 51.25 ms > XML-RPC: 54.90 ms > Result: JSON won by: 3.65 ms > > > FINAL RESULTS > ================================== > JSON-RPC Average Time: 47.53 ms > JSON-RPC Total Time Taken: 8767.23 ms > XML-RPC Average Time: 50.60 ms > XML-RPC Total Time Taken: 9076.67 ms > Result: JSON won by: 3.07 ms > > > As you can see, there wasn't much of a change. In fact, turning off > sessions added about 400 ms to the testing time. Now let's try with SSL: > > > ####################################### > ##### SSL with Sessions > ####################################### > > I ran this test several times because of the HUGE difference between the > protocols when used over SSL. I think this may be more of a problem with the > JSON client or server rather than the protocol itself. You'll see what I > mean: > > ADD TWO NUMBERS > ================================== > JSON-RPC: 335.97 ms > XML-RPC: 60.19 ms > Result: XML won by: 275.78 ms > > > CONCATENATE TWO STRINGS > ================================== > JSON-RPC: 335.83 ms > XML-RPC: 43.74 ms > Result: XML won by: 292.09 ms > > > HANDLE BOOLEAN VALUE > ================================== > JSON-RPC: 336.12 ms > XML-RPC: 43.93 ms > Result: XML won by: 292.20 ms > > > HANDLE DATETIME VALUE > ================================== > JSON-RPC: 334.30 ms > XML-RPC: 45.14 ms > Result: XML won by: 289.17 ms > > > HANDLE COMPLEX OBJECTS > ================================== > JSON-RPC: 337.24 ms > XML-RPC: 50.18 ms > Result: XML won by: 287.06 ms > > > FINAL RESULTS > ================================== > JSON-RPC Average Time: 335.90 ms > JSON-RPC Total Time Taken: 37605.90 ms > XML-RPC Average Time: 48.64 ms > XML-RPC Total Time Taken: 8878.73 ms > Result: XML won by: 287.26 ms > > > ####################################### > ##### SSL without Sessions > ####################################### > > Again using "session.forget(response)" here. And again, using this line > seems to slow things down a bit: > > > ADD TWO NUMBERS > ================================== > JSON-RPC: 341.59 ms > XML-RPC: 61.99 ms > Result: XML won by: 279.60 ms > > > CONCATENATE TWO STRINGS > ================================== > JSON-RPC: 338.62 ms > XML-RPC: 45.59 ms > Result: XML won by: 293.03 ms > > > HANDLE BOOLEAN VALUE > ================================== > JSON-RPC: 333.35 ms > XML-RPC: 46.06 ms > Result: XML won by: 287.28 ms > > > HANDLE DATETIME VALUE > ================================== > JSON-RPC: 332.38 ms > XML-RPC: 45.22 ms > Result: XML won by: 287.16 ms > > > HANDLE COMPLEX OBJECTS > ================================== > JSON-RPC: 336.60 ms > XML-RPC: 51.47 ms > Result: XML won by: 285.13 ms > > > FINAL RESULTS > ================================== > JSON-RPC Average Time: 336.51 ms > JSON-RPC Total Time Taken: 37665.40 ms > XML-RPC Average Time: 50.07 ms > XML-RPC Total Time Taken: 9023.97 ms > Result: XML won by: 286.44 ms > > > > > As you can see, JSON-RPC over SSL is a real problem. In fact, while I was > playing around with it, I noticed the 300 ms delay and this was the reason I > decided to do the performance testing in the first place. Now, I have web2py > running from a Ubuntu 10.04 virtual machine (using bridged networking) and > running the tests from the host machine (Mac OS X 10.7.1) over the network. > As for the code used to perform this test, I have attached the controller > and the test script, since they are too large to paste. > > I just thought this might be of interest as not only a general performance > test of web2py, but also an RPC performance test, which hasn't gotten as > much attention as web testing. >