"[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> My shot would be to test it like this on your platform like this:
>
> #!/usr/bin/env python
> import datetime, time
> t1 = datetime.datetime.now()
> for i in [str(x) for x in range(100)]:
> if int(i) == i:
> i + 1
> t2 = datetime.datetime.now()
> print t2 - t1
> for i in [str(x) for x in range(100)]:
> try:
> int(i) +1
> except:
> pass
> t3 = datetime.datetime.now()
> print t3 - t2

This is not a proper test since the if condition always fails and the 
addition not done while the try succeeds and the addition is done.  To be 
equivalent, remove the int call in the try part: try: i+1.  This would 
still not a proper test since catching exceptions is known to be expensive 
and try: except is meant for catching *exceptional* conditions, not 
always-bad conditions.  Here is a test that I think more useful:

for n in [1,2,3,4,5,10,20,50,100]:
  # time this
  for i in range(n):
    if i != 0: x = 1/i
    else: pass
  # versus
  for i in range(n):
    try x = 1/i
    except ZeroDivisionError: pass

I expect this will show if faster for small n and try for large n.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to