[xquery-talk] General comparisons of speed of xquery vs. xslt
per at bothner.com
Wed Apr 28 13:58:18 PDT 2004
Michael Kay wrote:
> In XQuery the natural technique is
> always to pull, which means you end up doing more tree construction and
> copying than is necessary.
Interesting. I think of the natural technique is to "push".
Perhaps we're talking about different things.
To me "pull" means "output demand-driven" or as the funtional
language community calls it "lazy evaluation". By analogy
"push" would be "input data-driven", which I agree is appropriate
for XSLT but not XQuery.
Perhaps we need a new term for the following, which we might call
"execution-driven": The basic control flow of the "interpreter"
follows the "natural execution order" of the query. E.g. you execute
a FLWOR by conceptually evaluting the input sequence, and then
for each item you execute the 'result' body with the given binding.
You execute a function call by executing each parameter, and then
executing the function body with the given bindings. I think of
this as "push" because each time a sub-expression is evaluated
the result is pushed to its consumer. I guess you might think
of this as "pull" because the choice which sub-expression to
execute is done by the parent expression, which pulls a result
from it. However, the "pulling" is a complete result sequence,
not item-by-item as needed. To reduce materializing sequence,
each item is pushed to a consumer.
per at bothner.com http://per.bothner.com/
More information about the talk