Blame benchmark/bench_xslt.py

Packit Service b74dd5
from itertools import *
Packit Service b74dd5
Packit Service b74dd5
import benchbase
Packit Service b74dd5
from benchbase import onlylib
Packit Service b74dd5
Packit Service b74dd5
############################################################
Packit Service b74dd5
# Benchmarks
Packit Service b74dd5
############################################################
Packit Service b74dd5
Packit Service b74dd5
class XSLTBenchMark(benchbase.TreeBenchMark):
Packit Service b74dd5
    @onlylib('lxe')
Packit Service b74dd5
    def bench_xslt_extensions_old(self, root):
Packit Service b74dd5
        tree = self.etree.XML("""\
Packit Service b74dd5
Packit Service b74dd5
   xmlns:l="test"
Packit Service b74dd5
   xmlns:testns="testns"
Packit Service b74dd5
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Packit Service b74dd5
  <l:data>TEST</l:data>
Packit Service b74dd5
  <xsl:template match="/">
Packit Service b74dd5
    <l:result>
Packit Service b74dd5
      <xsl:for-each select="*/*">
Packit Service b74dd5
        <xsl:copy-of select="testns:child(.)"/>
Packit Service b74dd5
      </xsl:for-each>
Packit Service b74dd5
    </l:result>
Packit Service b74dd5
  </xsl:template>
Packit Service b74dd5
</xsl:stylesheet>
Packit Service b74dd5
""")
Packit Service b74dd5
        def return_child(_, elements):
Packit Service b74dd5
            return elements[0][0]
Packit Service b74dd5
Packit Service b74dd5
        extensions = {('testns', 'child') : return_child}
Packit Service b74dd5
Packit Service b74dd5
        transform = self.etree.XSLT(tree, extensions)
Packit Service b74dd5
        for i in range(10):
Packit Service b74dd5
            transform(root)
Packit Service b74dd5
Packit Service b74dd5
    @onlylib('lxe')
Packit Service b74dd5
    def bench_xslt_document(self, root):
Packit Service b74dd5
        transform = self.etree.XSLT(self.etree.XML("""\
Packit Service b74dd5
Packit Service b74dd5
   xmlns:l="test"
Packit Service b74dd5
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Packit Service b74dd5
  <l:data>TEST</l:data>
Packit Service b74dd5
  <xsl:template match="/">
Packit Service b74dd5
    <l:result>
Packit Service b74dd5
      <xsl:for-each select="*/*">
Packit Service b74dd5
        <l:test><xsl:copy-of select="document('')//l:data/text()"/></l:test>
Packit Service b74dd5
      </xsl:for-each>
Packit Service b74dd5
    </l:result>
Packit Service b74dd5
  </xsl:template>
Packit Service b74dd5
</xsl:stylesheet>
Packit Service b74dd5
"""))
Packit Service b74dd5
        transform(root)
Packit Service b74dd5
Packit Service b74dd5
if __name__ == '__main__':
Packit Service b74dd5
    benchbase.main(XSLTBenchMark)