0
0
mirror of https://github.com/zeux/pugixml.git synced 2024-12-31 00:13:01 +08:00

XPath: Only call apply_predicates if necessary

In some cases constant overhead on step evaluation is important - i.e. for
queries that evaluate a simple step in a predicate expression. Eliminating
a redundant function call thus can prove worthwhile.

This change makes some queries (e.g. //*[not(*)]) 4% faster.
This commit is contained in:
Arseny Kapoulkine 2014-11-07 19:08:49 +01:00
parent db78f34054
commit d854b0219d

View File

@ -9025,13 +9025,13 @@ PUGI__NS_BEGIN
if (axis != axis_self && size != 0) ns.set_type(xpath_node_set::type_unsorted);
step_fill(ns, *it, stack.result, once, v);
apply_predicates(ns, size, stack, eval);
if (_right) apply_predicates(ns, size, stack, eval);
}
}
else
{
step_fill(ns, c.n, stack.result, once, v);
apply_predicates(ns, 0, stack, eval);
if (_right) apply_predicates(ns, 0, stack, eval);
}
// child, attribute and self axes always generate unique set of nodes