Arseny Kapoulkine
5da51dff27
XPath: Optimize attribute axis lookup
...
When looking for an attribute by name, finding the first attribute means
we can stop looking since attribute names are unique. This makes some
queries faster by 40%.
Another very common pattern in XPath queries is finding an attribute with
a specified value using a predicate (@name = 'value'). While we perform an
optimal amount of traversal in that case, there is a substantial overhead
with evaluating the nodes, saving and restoring the stack state, pushing
the attribute node into a set, etc. Detecting this pattern allows us to
use optimized code, resulting in up to 2x speedup for some queries.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1061 99668b35-9821-0410-8761-19e4c4f06640
2014-10-16 03:46:42 +00:00
Arseny Kapoulkine
883031fb45
XPath: Fix optimization bug with //name[last()]
...
The actual condition for the optimization is invariance from context list
-- this includes both position() and last().
Instead of splitting the posinv concept just include last() into
non-posinv expressions - this requires sorting for boolean predicates that
depend on last() and do not depend on position(). These cases should be
very rare.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1060 99668b35-9821-0410-8761-19e4c4f06640
2014-10-15 06:05:49 +00:00
Arseny Kapoulkine
9e6dcc292d
tests: Add XPath sorting test
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1054 99668b35-9821-0410-8761-19e4c4f06640
2014-10-05 08:39:44 +00:00
Arseny Kapoulkine
b17501c3fb
tests: Add XPath sorting tests and a simple test for numeric predicates
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1051 99668b35-9821-0410-8761-19e4c4f06640
2014-10-05 04:20:52 +00:00
Arseny Kapoulkine
5b875e8487
tests: Add one more XPath optimization test
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1022 99668b35-9821-0410-8761-19e4c4f06640
2014-09-23 04:40:05 +00:00
Arseny Kapoulkine
89fc7c241c
tests: More XPath tests
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1020 99668b35-9821-0410-8761-19e4c4f06640
2014-09-23 04:39:51 +00:00
arseny.kapoulkine
6d44879c5a
tests: Minor fixes
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@691 99668b35-9821-0410-8761-19e4c4f06640
2010-08-29 15:48:05 +00:00
arseny.kapoulkine
e08c065820
tests: Added XPath tests for attribute context
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@664 99668b35-9821-0410-8761-19e4c4f06640
2010-08-29 15:27:51 +00:00
arseny.kapoulkine
7d24b9b565
Set svn:eol-style to native for all text files
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@607 99668b35-9821-0410-8761-19e4c4f06640
2010-07-19 09:57:32 +00:00
arseny.kapoulkine
724a377544
tests: Added more Xalan tests
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@473 99668b35-9821-0410-8761-19e4c4f06640
2010-05-30 12:42:03 +00:00
arseny.kapoulkine
e91b5e3059
tests: Added tests for principal node types with attributes for all axes that can return attributes
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@471 99668b35-9821-0410-8761-19e4c4f06640
2010-05-30 07:52:18 +00:00
arseny.kapoulkine
43fc0ca13b
tests: Added more Xalan tests
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@467 99668b35-9821-0410-8761-19e4c4f06640
2010-05-29 22:51:38 +00:00
arseny.kapoulkine
d1b41ba178
tests: Added some axis Xalan tests, extended all axis tests to include attribute context nodes
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@465 99668b35-9821-0410-8761-19e4c4f06640
2010-05-29 20:11:12 +00:00
arseny.kapoulkine
5ff56a6d68
Removed document order optimization (it helps on a tiny percentage of queries), XPath tests now compute their own order
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@400 99668b35-9821-0410-8761-19e4c4f06640
2010-05-09 20:37:49 +00:00
arseny.kapoulkine
f542c5ebb8
Integrated changes from unicode branch to trunk
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@383 99668b35-9821-0410-8761-19e4c4f06640
2010-05-06 20:28:36 +00:00
arseny.kapoulkine
f02208b12f
tests: Final coverage improvements
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@229 99668b35-9821-0410-8761-19e4c4f06640
2009-11-08 16:15:05 +00:00
arseny.kapoulkine
0cac815b63
tests: More coverage tests
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@225 99668b35-9821-0410-8761-19e4c4f06640
2009-11-08 15:17:46 +00:00
arseny.kapoulkine
48bbb9f4dd
tests: Extracted generic tests in a separate header, better filter tests, some API tests added
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@221 99668b35-9821-0410-8761-19e4c4f06640
2009-11-08 13:52:55 +00:00
arseny.kapoulkine
e3293a8baa
tests: Mostly complete coverage of XPath W3C
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@217 99668b35-9821-0410-8761-19e4c4f06640
2009-11-08 12:25:56 +00:00
arseny.kapoulkine
f22d0647a2
tests: Added node test tests, added abbreviated step/axis tests
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@212 99668b35-9821-0410-8761-19e4c4f06640
2009-11-08 10:14:29 +00:00
arseny.kapoulkine
6948d1f171
tests: Completed function library tests, added namespace axis and variable reference tests
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@204 99668b35-9821-0410-8761-19e4c4f06640
2009-11-04 19:23:20 +00:00
arseny.kapoulkine
af04c0f754
tests: Added tests for all axes except namespace
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@201 99668b35-9821-0410-8761-19e4c4f06640
2009-11-03 19:55:15 +00:00