<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 5/10/11 9:36 AM, Balz Schreier wrote:
<blockquote
cite="mid:BANLkTik+JQHdi_oRjOaAk-jBZ4mMTTB0EQ@mail.gmail.com"
type="cite">
<div><span class="Apple-style-span" style="border-collapse:
collapse; font-family: Arial,'Liberation Sans','DejaVu
Sans',sans-serif; font-size: 14px; line-height: 18px;">
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
Hi, </p>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
I have searched for quite a while and didn't find concrete
answers to my simple question:</p>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
Which one of the options below is faster or is the XSLT
compiler "smart" enough so that both variants are the same
at the end?</p>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
1) I have to read a property in an external XML:</p>
<pre class="lang-xml prettyprint" style="margin: 0px 0px 10px; padding: 5px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; overflow: auto; width: auto; max-height: 600px;"><code style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;"><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);"><xsl:value-of</span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-co
lor: transparent; color: rgb(0, 0, 0);"> </span><span class="atn" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(255, 0, 0);">select</span><span class="pun" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">=</span><span class="atv" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 255);">"document($path)//city"</span><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">/></span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">
</span></code></pre>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
Whenever I need the city, I use the expression above (let's
say 100 times)</p>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
2) Instead of calling the document() 100 times, I store the
XML node in a variable:</p>
<pre class="lang-xml prettyprint" style="margin: 0px 0px 10px; padding: 5px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; overflow: auto; width: auto; max-height: 600px;"><code style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;"><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);"><xsl:variable</span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-co
lor: transparent; color: rgb(0, 0, 0);"> </span><span class="atn" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(255, 0, 0);">name</span><span class="pun" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">=</span><span class="atv" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 255);">"node"</span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);"> </span><span class="atn" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(255, 0, 0);">select</span><span class="pun" style="margin: 0px; padding: 0
px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">=</span><span class="atv" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 255);">"document($path)"</span><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">/></span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">
</span></code></pre>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
And then I use 100 times</p>
<pre class="lang-xml prettyprint" style="margin: 0px 0px 10px; padding: 5px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif; overflow: auto; width: auto; max-height: 600px;"><code style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: rgb(238, 238, 238); font-family: Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;"><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);"><xsl:value-of</span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-co
lor: transparent; color: rgb(0, 0, 0);"> </span><span class="atn" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(255, 0, 0);">select</span><span class="pun" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">=</span><span class="atv" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 255);">"$node//city"</span><span class="tag" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">/></span><span class="pln" style="margin: 0px; padding: 0px; border-width: 0px; font-size: 14px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 0);">
</span></code></pre>
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">
Which one is faster, better, for which reasons? <br>
</p>
</span></div>
</blockquote>
<br>
I would assume that (2) is faster, but I guess it depends on the
implementation (Yanel is currently using Xalan 2.7.0)<br>
<br>
Maybe it's best if you ask on one of the Xalan mailing lists or do
your own profiling by using the expression<br>
a million times in order to see a difference or log the file
requests.<br>
<br>
HTH<br>
<br>
Michael<br>
<blockquote
cite="mid:BANLkTik+JQHdi_oRjOaAk-jBZ4mMTTB0EQ@mail.gmail.com"
type="cite">
<div><span class="Apple-style-span" style="border-collapse:
collapse; font-family: Arial,'Liberation Sans','DejaVu
Sans',sans-serif; font-size: 14px; line-height: 18px;">
<p style="margin: 0px 0px 1em; padding: 0px; border-width:
0px; font-size: 14px; vertical-align: baseline;
background-color: transparent; clear: both; word-wrap:
break-word;">Thank you!</p>
</span></div>
</blockquote>
<br>
</body>
</html>