Re: [xsl] Using memory addressing to retrieve a value vice using a software string library to retrieve a value

Subject: Re: [xsl] Using memory addressing to retrieve a value vice using a software string library to retrieve a value
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 20 Nov 2015 12:28:02 -0000
Measure it and see. It depends totally on which XPath engine you are using.
Many simple XPath engines are likely to search the child elements of <edge>
sequentially, and to use string comparison to compare the name of each element
with "west". Others may index the children by element name, or may optimize
the name comparison.

You'll probably have to scale the problem up considerably if you want the
difference to be measurable.

Michael Kay
Saxonica


> On 20 Nov 2015, at 12:13, Costello, Roger L. costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> I want to retrieve "west".
>
> Which of these is faster?
>
> -------------------
> Approach #1
> -------------------
> The <edge> element contains text:
>
> 	<edge>garden west door</edge>
>
> "west" is retrieved using this XPath:
>
> 	substring-before(substring-after(., ' '), ' ')
>
> Note: assume that <edge> is the context node.
>
> -------------------
> Approach #2
> -------------------
> The <edge> element contains markup:
>
> 	<edge>
> 	    <garden/>
> 	    <west/>
> 	    <door/>
> 	</edge>
>
> "west" is retrieved using this XPath:
>
> 	*[2]/name()
>
>
> I believe that Approach #2 is much, much faster. Do you agree?
>
> As I see it, Approach #2 is simply a memory addressing task (which computers
do very well) to obtain <west/> and then output the symbols at that memory
address. Approach #1, on the other hand, requires the use of software string
libraries, which, I imagine, results in hundreds or thousands of machine
instructions. In fact, I would imagine that Approach #2 is hundreds or
thousands of times faster than Approach #1. Do you agree?
>
> /Roger

Current Thread