Co je rychlejsi ?
Pavel Kolesnikov
koles na atrey.karlin.mff.cuni.cz
Pondělí Březen 30 13:48:13 MEST 1998
Ludek Finstrle <lfinstrl na gvid.cz> wrote:
: Chtel bych se jen zeptat, co je rychlejsi z nasledujicich dvou porovnani:
: if (($text eq 'neco') or ($text eq 'neco1')) {}
: if ($text =~ /^neco$|^neco1$/) {}
: nebo je jeste neco rychlejsiho?
Myslim, ze rychlejsi je rozhodne prvni varianta, prece jen porovnavani
retezcu je operaci vyrazne rychlejsi nez vytvareni regularniho vyrazu.
Jeste k druhemu pripadu - i kdyby bylo treba pouzit regularniho vyrazu,
vetsinou bude rychlejsi
if (/re1/ or /re2/)
nezli
if (/re1|re2/)
protoze "optimalizator se snazi urcite jednoduche porovnavaci operace
presouvat do vyssich casti syntaktickeho stromu, kde provadi velmi
rychle porovnavani pomoci Boyer-Moorova algoritmu. Komplikovany vzor
tomu vsak brani." Tak pravila Velbloudi Kniha. :)
Pavel
Další informace o konferenci Perl