in reply to if-else vs. tertiary effieciency?
Oh, one thing I meant to say earlier, but forgot about: the if statement and the ?: operator aren't really the seperate beasts they appear to be. See the documentation of B::Deparse, and the section on -q, specificly.
perl -MO=Deparse,-p,-x9 -e "if ($/) {print 1} else {print 2}" ($/ ? do { print(1) } : do { print(2) }); -e syntax OK perl -MO=Deparse,-p,-x9 -e "$/?print 1:print 2" ($/ ? print(1) : print(2)); -e syntax OK
All the speed diference you see is from those do{}s. Moral of the story? Perl is even stranger then it looks, it has a poor optimizer, do{} is expensive, and other. Pick any combination you feel like.
|
|---|