[Python-Dev] Performance of various marshallers (original) (raw)

Skip Montanaro skip@pobox.com (Skip Montanaro)
Mon, 1 Oct 2001 22:06:04 -0500


total test time (approximately 5 seconds). Each test was run 3 times. The largest number is recorded below, rounded to three significant digits.

                    encode          decode
                    ------          ------
marshal             25900           7830
cPickle              1230            149

Were the cPickle tests run in binary or original flavor?

I wasn't aware of a "binary flavor". It's not mentioned in the online docs. I just called cPickle.dumps or cPickle.loads as appropriate. It looks like I should call them with a second binary flag.

xmlrpclib 0.9.8
    w/ sgmlop         416            107
    w/o sgmlop        415             16.3  <--+
xmlrpclib 1.0b4                                |
    w/ sgmlop         365             92.0     |
    w/o sgmlop        363             74.9  <--+
py-xmlrpc            2780           2260       |
                                                  |

+---------------------------------------------------+ | +----> I presume that Expat was available for the second run and not for the first? These should probably be broken into three categories: sgmlop, expat, and xmllib.

In 0.9.8 there are two parsers, fast (with sgmlop) and slow (without). I believe the ExpatParser was used in the second version. It doesn't really matter to me because they are all perform so abysmally.

     I also presume that py-xmlrpc never calls from C->Python
     during the parse phase, but I've not yet had a chance to look
     at this code.

I don't know. I've not looked at the code, only the output. I have cc'd Shilad Sen on this thread. He should be able to tell us how py-xmlrpc gets such good performance.

Skip