<!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>