Performance of matches() vs castable as xs:integer
Hello all,
I'm scanning millions of XML records imported from CSV looking for instances of 'bib_rec_id' which are non-numeric. Which of these two is if-statements likely to complete earlier?
for $a in (/csv/record/bib_rec_id)
return
if ($a castable as xs:integer) then ... blahor
if (matches($a, '^[0-9]+$')) then ... blah
Yes - I'm trying it out now, but I suspect it will be quicker to ask than wait for either query to complete.
TIA.
________________________________
Elsevier B.V. Registered Office: Radarweg 29, 1043 NX Amsterdam, The Netherlands, Registration No. 33156677, Registered in The Netherlands.
Hello Constantine,
Why don't you try it out on a smaller subset (for $a in (/csv/record/bib_rec_id[position() < 1000)?
My guess is the cast is faster, but when you try it you will now for sure.
Cheers, Dirk
Quoted text · Constantine (ELS-AMS) · 29 lines
On 03/04/14 17:32, Hondros, Constantine (ELS-AMS) wrote: > Hello all, > > I'm scanning millions of XML records imported from CSV looking for instances of 'bib_rec_id' which are non-numeric. Which of these two is if-statements likely to complete earlier? > > for $a in (/csv/record/bib_rec_id) > return > if ($a castable as xs:integer) then ... blah > > or > > if (matches($a, '^[0-9]+$')) then ... blah > > > Yes - I'm trying it out now, but I suspect it will be quicker to ask than wait for either query to complete. > > TIA. > > ________________________________ > > Elsevier B.V. Registered Office: Radarweg 29, 1043 NX Amsterdam, The Netherlands, Registration No. 33156677, Registered in The Netherlands. > > > > _______________________________________________ > BaseX-Talk mailing list > BaseX-Talk at mailman.uni-konstanz.de > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk >
Written for BaseX 7.8. BaseX may have changed since: please check the current documentation.