Jonathan, Good point about the nop. The nop is on BOTH protocols and does not count against the total time or the averages. Here are the results from that:
ADD TWO NUMBERS ================================== JSON-RPC: 75.57 ms XML-RPC: 45.65 ms Result: XML won by: 29.92 ms (165.5% faster) CONCATENATE TWO STRINGS ================================== JSON-RPC: 47.38 ms XML-RPC: 44.06 ms Result: XML won by: 3.32 ms (107.5% faster) HANDLE BOOLEAN VALUE ================================== JSON-RPC: 47.34 ms XML-RPC: 45.12 ms Result: XML won by: 2.22 ms (104.9% faster) HANDLE DATETIME VALUE ================================== JSON-RPC: 49.72 ms XML-RPC: 44.40 ms Result: XML won by: 5.31 ms (112.0% faster) HANDLE COMPLEX OBJECTS ================================== JSON-RPC: 46.94 ms XML-RPC: 49.16 ms Result: JSON won by: 2.22 ms (104.7% faster) FINAL RESULTS ================================== JSON-RPC Average Time: 53.39 ms JSON-RPC Total Time Taken: 9353.91 ms XML-RPC Average Time: 45.68 ms XML-RPC Total Time Taken: 8581.04 ms Result: XML won by: 7.71 ms (116.9% faster) I also took Anthony's advice and removed all the models, except for three lines from db.py that are required: from gluon.tools import Service service = Service() response.generic_patterns = ['*'] This has changed the results quite a bit: ADD TWO NUMBERS ================================== JSON-RPC: 54.63 ms XML-RPC: 18.32 ms Result: XML won by: 36.31 ms (298.2% faster) CONCATENATE TWO STRINGS ================================== JSON-RPC: 56.27 ms XML-RPC: 16.73 ms Result: XML won by: 39.53 ms (336.3% faster) HANDLE BOOLEAN VALUE ================================== JSON-RPC: 57.56 ms XML-RPC: 16.95 ms Result: XML won by: 40.61 ms (339.6% faster) HANDLE DATETIME VALUE ================================== JSON-RPC: 56.29 ms XML-RPC: 16.28 ms Result: XML won by: 40.01 ms (345.8% faster) HANDLE COMPLEX OBJECTS ================================== JSON-RPC: 59.26 ms XML-RPC: 21.65 ms Result: XML won by: 37.61 ms (273.8% faster) FINAL RESULTS ================================== JSON-RPC Average Time: 56.80 ms JSON-RPC Total Time Taken: 9694.15 ms XML-RPC Average Time: 17.99 ms XML-RPC Total Time Taken: 5815.11 ms Result: XML won by: 38.82 ms (315.8% faster) To make sure I got accurate results, I restarted the server, and ran the test twice before pasting these numbers. There seems to be a staggering difference between the XML-RPC and JSON-RPC implementations when models aren't used. For some reason, XML-RPC is running more than 300% faster, while the JSON-RPC remains the same. I am going to play around with the models to see where that extra performance came from.