Re: Optimizing constants in loops
- From: Thomas Heller <theller@xxxxxxxxxx>
- Date: Wed, 13 Jun 2007 17:40:06 +0200
Michael Hoffman schrieb:
The peephole optimizer now takes things like
if 0:
do_stuff()
and optimizes them away, and optimizes away the conditional in "if 1:".
What if I had a function like this?
def func(debug=False):
for index in xrange(1000000):
if debug:
print index
do_stuff(index)
Could the "if debug" be optimized away on function invocation if debug
is immutable and never reassigned in the function? When performance
really matters in some inner loop, I usually move the conditional
outside like this:
def func(debug=False):
if debug:
for index in xrange(1000000):
print index
do_stuff(index)
else:
for index in xrange(1000000):
do_stuff(index)
It would be nice if this sort of thing could be done automatically,
either by the interpreter or a function decorator.
Just use the builtin __debug__ variable for that purpose.
__debug__ is 'True' if Python is run normally, and 'False'
if run with the '-O' or '-OO' command line flag.
The optimizer works in the way you describe above (which
it will not if you use a custom variable).
Thomas
.
- Follow-Ups:
- Re: Optimizing constants in loops
- From: Michael Hoffman
- Re: Optimizing constants in loops
- References:
- Optimizing constants in loops
- From: Michael Hoffman
- Optimizing constants in loops
- Prev by Date: Re: SimplePrograms challenge
- Next by Date: problem on waiting exit thread and write on file
- Previous by thread: Optimizing constants in loops
- Next by thread: Re: Optimizing constants in loops
- Index(es):
Relevant Pages
|