[XML-SIG] XML package speed (or lack thereof...)?

skip@mojam.com (Skip Montanaro) skip@mojam.com (Skip Montanaro)
Tue, 27 Apr 1999 13:23:13 -0400

I'm using XML-RPC to provide an over-the-net API to Python, Perl and Java
clients on my server.  I'm currently using a hacked up version of Fredrik
Lundh's xmlrpclib module.  The hacking part involved writing a C module to
do the low-level encoding and decoding so it was fast enough for my
purposes.  This library only does XML-RPC, nothing else.

Ideally, I'd like to dump my XML-RPC-specific code in favor of something
more general, robust and better supported.  Accordingly, I downloaded the
0.5.1 version of the xml-sig package today and gave it a whirl.  After
making a couple small mods to marshal/generic/test:

    def test(load, loads, dump, dumps, test_values,
	     do_assert = 1):
	# Try all the above bits of data
	try: from cStringIO import StringIO
	except ImportError: from StringIO import StringIO
	import time

	t = time.time()
	for i in range(10):
	    for item in test_values:
		s = dumps(item)
		#print item, s
		output = loads(s)
		# Try it from a file
		file = StringIO()
		dump(item, file)
		output2 = load(file)

		if do_assert:
		    assert item==output and item==output2 and output==output2
	t = time.time() - t
	print "total time: %.2f seconds" % t
	print "time per pass: %.2f seconds" % (t/10)

and commenting out a print statement in marshal/xmlrpc/XMLRPCUnmarshaller/
um_end_dictionary, I was able to run the test without any spurious messages.
I got the following output on my 100 MHz Pentium (Python 1.5.1, RH Linux

    >>> xml.marshal.xmlrpc.runtests ()
    Testing XML-RPC marshalling...
    total time: 9.77 seconds
    time per pass: 0.98 seconds

This is hardly what I would call blazing speed (perhaps 30-100x slower than
what I currently get), especially considering the small size of the test
data, so I thought perhaps I was missing something - an optional C library
perhaps?  I see that Fredrik's sgmlop module was built and installed, but my
guess is that it's not being used.


Skip Montanaro	| Mojam: "Uniting the World of Music" http://www.mojam.com/
skip@mojam.com  | Musi-Cal: http://www.musi-cal.com/