Subject: Re: Cheaper to prepend or append an item to a sequence?
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 22 Feb 2011 14:40:50 +0000
|
On 22/02/2011 14:25, Andrew Welch wrote:
<report test="@id = (//@id[not(ancestor::meta)] except @id)">
The most
inefficient part of this is the test [not(ancestor::meta)] - it would be
nice if Saxon were smart enough to remember while scanning the elements
whether it has passed more meta start-tags than end-tags - but sadly, it
isn't.
couldn't that be rewritten as:
@id = //@id except (@id, //meta//@id)
to avoid the ancestor walk?
It could. Whether it would be faster depends on the volumetrics -
something Saxon doesn't have any knowledge of at the time it makes
optimization decisions.
Michael Kay
Saxonica
|