return elements[0][0] extensions = {("testns", "child"): return_child} transform = self.etree.XSLT(tree, extensions) for i in range(10): transform(root) @onlylib("lxe") def bench_xslt_document(self, root): transform = self.etree.XSLT( self.etree.XML("""\ <xsl:stylesheet version="1.0" xmlns:l="test" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <l:data>TEST</l:data> <xsl:template match="/"> <l:result> <xsl:for-each select="*/*"> <l:test><xsl:copy-of select="document('')//l:data/text()"/></l:test> </xsl:for-each> </l:result> </xsl:template> </xsl:stylesheet> """)) transform(root) if __name__ == "__main__": benchbase.main(XSLTBenchMark)
extensions = {("test", "child"): return_child} xpath = self.etree.XPath("t:child(.)", namespaces={"t": "test"}, extensions=extensions) for child in children: xpath(child) @nochange @onlylib("lxe") @children def bench_xpath_extensions(self, children): def return_child(_, elements): if elements: return elements[0][0] else: return () self.etree.FunctionNamespace("testns")["t"] = return_child try: xpath = self.etree.XPath("test:t(.)", namespaces={"test": "testns"}) for child in children: xpath(child) finally: del self.etree.FunctionNamespace("testns")["t"] if __name__ == "__main__": benchbase.main(XPathBenchMark)
transform = self.etree.XSLT(tree, extensions) for i in range(10): transform(root) @onlylib("lxe") def bench_xslt_document(self, root): transform = self.etree.XSLT( self.etree.XML( """\ <xsl:stylesheet version="1.0" xmlns:l="test" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <l:data>TEST</l:data> <xsl:template match="/"> <l:result> <xsl:for-each select="*/*"> <l:test><xsl:copy-of select="document('')//l:data/text()"/></l:test> </xsl:for-each> </l:result> </xsl:template> </xsl:stylesheet> """ ) ) transform(root) if __name__ == "__main__": benchbase.main(XSLTBenchMark)
else: return () extensions = {("test", "child"): return_child} xpath = self.etree.XPath("t:child(.)", namespaces={"test": "t"}, extensions=extensions) for child in children: xpath(child) @nochange @onlylib("lxe") @children def bench_xpath_extensions(self, children): def return_child(_, elements): if elements: return elements[0][0] else: return () self.etree.FunctionNamespace("testns")["t"] = return_child try: xpath = self.etree.XPath("test:t(.)", namespaces={"test": "testns"}) for child in children: xpath(child) finally: del self.etree.FunctionNamespace("testns")["t"] if __name__ == "__main__": benchbase.main(XPathBenchMark)
def bench_iter_single(self, root): next(root.iter(self.SEARCH_TAG)) _bench_xpath_two_xpath = None @nochange @onlylib('lxe') def bench_xpath_two(self, root): xpath = self._bench_xpath_two_xpath if xpath is None: ns, tag = self.SEARCH_TAG[1:].split('}') xpath = self._bench_xpath_two_xpath = self.etree.XPath( './/p:%s[position() < 3]' % tag, namespaces={'p': ns}) xpath(root) @nochange def bench_iterfind_two(self, root): it = root.iterfind(".//%s" % self.SEARCH_TAG) next(it) next(it) @nochange def bench_iter_two(self, root): it = root.iter(self.SEARCH_TAG) next(it) next(it) if __name__ == '__main__': benchbase.main(BenchMark)
@nochange @with_text(text=True) def bench_type_inference(self, root): "1 2 4" el = root.aaaaa for i in self.repeat1000: el.getchildren() @nochange @with_text(text=True) def bench_type_inference_annotated(self, root): "1 2 4" el = root.aaaaa self.objectify.annotate(el) for i in self.repeat1000: el.getchildren() @nochange @children def bench_elementmaker(self, children): E = self.objectify.E for child in children: root = E.this("test", E.will( E.do("nothing"), E.special, )) if __name__ == '__main__': benchbase.main(BenchMark)