[Python-Dev] backticks delenda est (original) (raw)
Anthony Baxter anthony at ekit-inc.com
Mon Dec 1 01:15:46 EST 2003
- Next message: [Python-Dev] "groupby" iterator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Raymond Hettinger" wrote Advisory from a micro-performance hawk: Backticks are faster than repr() >>> from timeit import Timer >>> min(Timer('
x
', 'x=1').repeat(3)) 1.4857213496706265 >>> min(Timer('repr(x)', 'x=1').repeat(3)) 1.7748914665012876
Presumably because the backtick version doesn't have to look up 'repr', then call it.
def f1(a): ... repr(a) ...
def f2(a): ...
a
... import dis dis.dis(f1) 2 0 LOAD_GLOBAL 0 (repr) 3 LOAD_FAST 0 (a) 6 CALL_FUNCTION 1 9 POP_TOP
10 LOAD_CONST 0 (None) 13 RETURN_VALUE
dis.dis(f2) 2 0 LOAD_FAST 0 (a) 3 UNARY_CONVERT
4 POP_TOP
5 LOAD_CONST 0 (None) 8 RETURN_VALUE
This is presumably something that a future optimiser could "fix", once we have the no-shadowing-builtins rule enforced.
I don't think this is a serious enough problem to merit leaving the backticks in the std lib. I find them annoying, and hard to read. In general, the backticks are in debugging and error handling code, so the performance penalty should be negligible.
Anthony
- Next message: [Python-Dev] "groupby" iterator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]