Skip to content
  • Kasimier T. Buchcik's avatar
    Optimized xmlXPathNodeCollectAndTest() and xmlXPathNodeCollectAndTestNth() · df0ba264
    Kasimier T. Buchcik authored
    * xpath.c: Optimized xmlXPathNodeCollectAndTest() and
      xmlXPathNodeCollectAndTestNth() to evaluate a compound
      traversal of 2 axes when we have a "//foo" expression.
      This is done with a rewrite of the XPath AST in
      xmlXPathRewriteDOSExpression(); I added an additional field
      to xmlXPathStepOp for this (but the field's name should be
      changed). The mechanism: the embracing descendant-or-self
      axis traversal (also optimized to return only nodes which
      can hold elements), will produce context nodes for the
      inner traversal of the child axis. This way we avoid a full
      node-collecting traversal of the descendant-or-self axis.
      Some tests indicate that this can reduce execution time of
      "//foo" to 50%. Together with the XPath object cache this
      all significantly speeds up libxslt.
    df0ba264
To find the state of this project's repository at the time of any of these versions, check out the tags.