[Python-Dev] default of returning None hurts performance? (original) (raw)

Collin Winter collinw at gmail.com
Tue Sep 1 00:28:29 CEST 2009


On Mon, Aug 31, 2009 at 3:07 PM, Gregory P. Smith<greg at krypto.org> wrote:

On Mon, Aug 31, 2009 at 2:20 PM, Antoine Pitrou <solipsis at pitrou.net> wrote:

Gregory P. Smith <greg krypto.org> writes: > > food for thought as noticed by a coworker who has been profiling some > hot code to optimize a library...If a function does not have a return statement we return None.  Ironically this makes the foo2 function below faster than the bar2 function at least as measured using bytecode size I would be surprised if this "bytecode size" difference made a significant difference in runtimes, given that function call cost should dwarf the cumulated cost of POPTOP and LOADCONST (two of the simplest opcodes you could find). the attached sample code repeatably shows that it makes a difference though its really not much of one (2-3%). I was just wondering if a bytecode for a superinstruction of the common sequence: 6 POPTOP 7 LOADCONST               0 (None) 10 RETURNVALUE might be worth it.

I doubt it. You'd save a bit of stack manipulation, but since this will only appear at the end of a function, I'd be skeptical that this would make any macrobenchmarks (statistically) significantly faster.

Collin Winter



More information about the Python-Dev mailing list