Phillip J. Eby wrote:

>>Only contains expressions are translated:
>>
>>     "if x in [1,2,3]"
>>
>>currently turns into:
>>
>>     "if x in (1,2,3)"
>>
>>and I'm proposing that it go one step further:
>>
>>     "if x in Seachset([1,2,3])"
>
> ISTM that whenever I use a constant in-list like that, it's almost always 
> with just a few (<4) 
> items, so it doesn't seem worth the extra effort (especially disrupting the 
> marshal module) just 
> to squeeze out those extra two comparisons and replace them with a hashing 
> operation.

it could be worth expanding them to

    "if x == 1 or x == 2 or x == 3:"

though...

C:\>timeit -s "a = 1" "if a in (1, 2, 3): pass"
10000000 loops, best of 3: 0.11 usec per loop
C:\>timeit -s "a = 1" "if a == 1 or a == 2 or a == 3: pass"
10000000 loops, best of 3: 0.0691 usec per loop

C:\>timeit -s "a = 2" "if a == 1 or a == 2 or a == 3: pass"
10000000 loops, best of 3: 0.123 usec per loop
C:\>timeit -s "a = 2" "if a in (1, 2, 3): pass"
10000000 loops, best of 3: 0.143 usec per loop

C:\>timeit -s "a = 3" "if a == 1 or a == 2 or a == 3: pass"
10000000 loops, best of 3: 0.187 usec per loop
C:\>timeit -s "a = 3" "if a in (1, 2, 3): pass"
1000000 loops, best of 3: 0.197 usec per loop

C:\>timeit -s "a = 4" "if a in (1, 2, 3): pass"
1000000 loops, best of 3: 0.225 usec per loop
C:\>timeit -s "a = 4" "if a == 1 or a == 2 or a == 3: pass"
10000000 loops, best of 3: 0.161 usec per loop

</F> 



_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to