Lists Home |
Date Index |
At 02:35 PM 5/7/2002 -0700, Joe English wrote:
>Jonathan Robie wrote:
> > As you point out, static typing can definitely improve runtime performance.
> > Consider comparisons. In XQuery, $a = $b can mean a lot of things. If you
> > know both are singleton integers, you can just do an integer compare. If $b
> > is a sequence, you have to do existential quantification. If both are
> > strings, you need a string compare. The static type system can rewrite the
> > query to do the appropriate compare without needing to examine the data.
> > Without it, you have to pick your way through the data and use conditional
> > logic to figure out which comparison to use.
>You have been asking for concrete examples where XQuery's
>type system imposes an additional cost on users. I think
>the above counts as such an example.
Ah, I love concrete examples! Let's see where this leads....
>If there is no efficient way to implement '=' without static
>type analysis, and static type analysis requires a W3C XML Schema
>as an input (which is my interpretation of [XQuery] section 3.1,
>please correct me if I'm wrong), then anybody who uses '=' has
>to pay, either by decreased efficiency or by having to use a W3C
Static analysis does not require an XML Schema as input, once our DTD
mapping (marked as unfinished in the Data Model document) is done. What
static analysis will tell you for documents that do not use schemas and
have no datatypes is this: all the compares are typeless, and should be
treated as string compares. Actually, your static analysis will often tell
you also whether you will always be comparing two strings or comparing 1 to
N, N to 1, or N to N, so it can rewrite the query to do the right thing
without doing superfluous existential quantification when it already knows
you are always comparing one string to another.
If you *do* have an XML schema, and that schema uses types, then the static
analysis will also tell you which typed comparisons to make, and whether
they are well defined for a given comparison.