benchmark.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # $Id: benchmark.py 1757 2004-03-28 17:21:25Z fredrik $
  2. # simple elementtree benchmark program
  3. from elementtree import XMLTreeBuilder, SimpleXMLTreeBuilder
  4. from elementtree import SgmlopXMLTreeBuilder
  5. from xml.dom import minidom
  6. import sys, time
  7. try:
  8. file = sys.argv[1]
  9. except IndexError:
  10. file = "hamlet.xml"
  11. def benchmark(file, builder_module):
  12. source = open(file, "rb")
  13. t0 = time.time()
  14. parser = builder_module.TreeBuilder()
  15. while 1:
  16. data = source.read(32768)
  17. if not data:
  18. break
  19. parser.feed(data)
  20. tree = parser.close()
  21. t1 = time.time()
  22. print "%s: %d nodes read in %.3f seconds" % (
  23. builder_module.__name__, len(tree.getiterator()), t1-t0
  24. )
  25. raw_input("press return to continue...")
  26. del tree
  27. def benchmark_minidom(file):
  28. t0 = time.time()
  29. dom = minidom.parse(file)
  30. t1 = time.time()
  31. print "minidom tree read in %.3f seconds" % (t1-t0)
  32. raw_input("press return to continue...")
  33. del dom
  34. benchmark(file, XMLTreeBuilder)
  35. benchmark(file, SimpleXMLTreeBuilder) # use xmllib
  36. try:
  37. benchmark(file, SgmlopXMLTreeBuilder) # use sgmlop
  38. except RuntimeError, v:
  39. print "=== SgmlopXMLTreeBuilder not available (%s)" % v
  40. benchmark_minidom(file)