control structures (was "Re: Sins")
Skip Montanaro
skip at mojam.com
Thu Jan 6 14:21:38 EST 2000
Darrell> Don't know if this if fair. But exceptions are slow when raised.
Agreed in the case of your two-branch case. If you have a state machine
with a bunch of states, try/except/except/... appears to perform about as
well as if/elif/elif/.../else:
import string, time
def func1(size):
s = string.letters + string.digits
for i in xrange(size):
for l in s:
try:
raise intern(l)
except "a":
pass
except "b":
pass
except "c":
pass
except "d":
pass
except "e":
pass
except "f":
pass
except "g":
pass
except "h":
pass
except "i":
pass
except "j":
pass
except "k":
pass
except "l":
pass
except "m":
pass
except "n":
pass
except "o":
pass
except "p":
pass
except "q":
pass
except "r":
pass
except "s":
pass
except "t":
pass
except "u":
pass
except "v":
pass
except "w":
pass
except "x":
pass
except "y":
pass
except "z":
pass
except "A":
pass
except "B":
pass
except "C":
pass
except "D":
pass
except "E":
pass
except "F":
pass
except "G":
pass
except "H":
pass
except "I":
pass
except "J":
pass
except "K":
pass
except "L":
pass
except "M":
pass
except "N":
pass
except "O":
pass
except "P":
pass
except "Q":
pass
except "R":
pass
except "S":
pass
except "T":
pass
except "U":
pass
except "V":
pass
except "W":
pass
except "X":
pass
except "Y":
pass
except "Z":
pass
except "0":
pass
except "1":
pass
except "2":
pass
except "3":
pass
except "4":
pass
except "5":
pass
except "6":
pass
except "7":
pass
except "8":
pass
except "9":
pass
def func2(size):
s = string.letters + string.digits
for i in xrange(size):
for l in s:
if l == "a":
pass
elif l == "b":
pass
elif l == "c":
pass
elif l == "d":
pass
elif l == "e":
pass
elif l == "f":
pass
elif l == "g":
pass
elif l == "h":
pass
elif l == "i":
pass
elif l == "j":
pass
elif l == "k":
pass
elif l == "l":
pass
elif l == "m":
pass
elif l == "n":
pass
elif l == "o":
pass
elif l == "p":
pass
elif l == "q":
pass
elif l == "r":
pass
elif l == "s":
pass
elif l == "t":
pass
elif l == "u":
pass
elif l == "v":
pass
elif l == "w":
pass
elif l == "x":
pass
elif l == "y":
pass
elif l == "z":
pass
elif l == "A":
pass
elif l == "B":
pass
elif l == "C":
pass
elif l == "D":
pass
elif l == "E":
pass
elif l == "F":
pass
elif l == "G":
pass
elif l == "H":
pass
elif l == "I":
pass
elif l == "J":
pass
elif l == "K":
pass
elif l == "L":
pass
elif l == "M":
pass
elif l == "N":
pass
elif l == "O":
pass
elif l == "P":
pass
elif l == "Q":
pass
elif l == "R":
pass
elif l == "S":
pass
elif l == "T":
pass
elif l == "U":
pass
elif l == "V":
pass
elif l == "W":
pass
elif l == "X":
pass
elif l == "Y":
pass
elif l == "Z":
pass
elif l == "0":
pass
elif l == "1":
pass
elif l == "2":
pass
elif l == "3":
pass
elif l == "4":
pass
elif l == "5":
pass
elif l == "6":
pass
elif l == "7":
pass
elif l == "8":
pass
elif l == "9":
pass
size=1000
t1=time.time()
func1(size)
print 'Time:',time.time()-t1
t1=time.time()
func2(size)
print 'Time:',time.time()-t1
Running the above yields:
Time: 5.52181506157
Time: 4.23444199562
;-)
Skip Montanaro | http://www.mojam.com/
skip at mojam.com | http://www.musi-cal.com/
847-971-7098 | Python: Programming the way Guido indented...
More information about the Python-list
mailing list