[Python-Dev] PEP 285: Adding a bool type (original) (raw)
Stuart Bishop zen@shangri-la.dropbear.id.au
Fri, 5 Apr 2002 11:46:13 +1000
- Previous message: [Python-Dev] Re: [development doc updates]
- Next message: [Python-Dev] PEP 285: Adding a bool type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Friday, April 5, 2002, at 01:06 AM, Guido van Rossum wrote:
On Thursday, April 4, 2002, at 02:22 PM, Stuart Bishop wrote:
On a side note, writing 'i or False and True' performs much better
I mean (i and True) or (i or False)
than bool(i) in the test implementation, and flow control statements involving ints are perform much better than flow control using bool. Will there be a performance degredation in the final version, or can this be avoided?
I fixed my test to not do a global lookup on True and flow control is no longer slower. Do I take it that you were benchmarking with the Python class shown in the PEP?
No - I was benchmarking with the patch posted on Sourceforge (before PEP285 was checked into CVS), patched into a CVS snapshot taken at the same time.
Casting to bool using (x and True) or (x or False) : 1.61 Casting to bool using (bool) : 2.68 Flow control on explicit True : 1.42 Flow control on explicit 1 : 0.99 Flow control on variable bound to True : 1.02 Flow control on variable bound to 1 : 0.99
import time
count = 1000000
def test1(): ''' Casting to bool using (x and True) or (x or False) ''' nums = xrange(count) start = time.clock() for i in nums: x = (i and True) or (i or False) end = time.clock() return end - start
def test2(): ''' Casting to bool using (bool) ''' nums = xrange(count) start = time.clock() for i in nums: x = bool(i) end = time.clock() return end - start
def test3(): ''' Flow control on explicit True ''' nums = xrange(count) start = time.clock() for i in nums: if True: pass else: pass end = time.clock() return end - start
def test4(): ''' Flow control on explicit 1 ''' nums = xrange(count) start = time.clock() for i in nums: if 1: pass else: pass end = time.clock() return end - start
def test5(a = True): ''' Flow control on variable bound to True ''' nums = xrange(count) start = time.clock() for i in nums: if a: pass else: pass end = time.clock() return end - start
def test6(a = 1): ''' Flow control on variable bound to 1 ''' nums = xrange(count) start = time.clock() for i in nums: if a: pass else: pass end = time.clock() return end - start
for f in (test1,test2,test3,test4,test5,test6): print f.doc,': ',f()
-- Stuart Bishop <zen@shangri-la.dropbear.id.au> http://shangri-la.dropbear.id.au/
- Previous message: [Python-Dev] Re: [development doc updates]
- Next message: [Python-Dev] PEP 285: Adding a bool type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]