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.
>

Reply via email to