[xquery-talk] Optimizations
Rémi Dewitte
remi at gide.net
Fri Oct 3 16:17:13 PDT 2008
Hi,
I have made a little experiment after reading Michael (Kay) blog posts about
optimizations and recent James Fuller article.
I have a question quite specific to saxon still interesting in general.
Why in the following example even the function call is not skipped ?
XQuery is ::
declare variable $level := 3;
declare function local:debug($what){
if($level >=4) then
<debug>{$what}</debug>
else ()
};
let $dosmthg := <oki>test trace</oki>
return
(local:debug($dosmthg),$dosmthg)
When I run saxon with -explain we get
<query>
<globalVariables>
<declareVariable name="level">
<literal value="3" type="xs:integer"/>
</declareVariable>
</globalVariables>
<declareFunction name="local:debug" tailRecursive="false">
<literal value="()"/>
</declareFunction>
<body>
<let variable="dosmthg" as="element(oki, {
http://www.w3.org/2001/XMLSchema}untyped)">
<be>
<directElement name="oki" validation="skip">
<valueOf>
<literal value="test trace" type="xs:string"/>
</valueOf>
</directElement>
</be>
<return>
<sequence>
<functionCall name="local:debug" tailCall="false">
<variableReference name="dosmthg"/>
</functionCall>
<variableReference name="dosmthg"/>
</sequence>
</return>
</let>
</body>
</query>
Cheers,
Rémi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20081003/a4459d62/attachment.htm
More information about the talk
mailing list