[Python-Dev] Performance of various marshallers
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