Author collinwinter
Recipients
Date 2006-06-01.20:03:07
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
The following patch adds a peephole optimisation to the
compiler that optimises expressions like

x in (5, 6, 7)

to

x in frozenset([5, 6, 7])

That is, any "in" operation on tuples of constants will
be optimised to "in" operations on frozensets. Note
that the patch does not handle lists, as "in [constant
list]" is already optimised to "in (constant tuple)".

Additional tests for Lib/test/test_peepholer.py are
included. This patch is against r46597.


Some benchmarks (all times in usecs per loop):

./python -mtimeit '5 in (5, 6, 7, 8, 9)'
Unoptimised: 0.376
Optimised:   0.437

./python -mtimeit '9 in (5, 6, 7, 8, 9)'
Unoptimised: 1.14
Optimised:   0.436

./python -mtimeit '89 in (5, 6, 7, 8, 9)'
Unoptimised: 1.32
Optimised:   0.498
History
Date User Action Args
2007-08-23 15:52:30adminlinkissue1499095 messages
2007-08-23 15:52:30admincreate