Created on 2010-11-12 21:24 by pitrou, last changed 2022-04-11 14:57 by admin. This issue is now closed.
msg121081 - (view) Author: Antoine Pitrou (pitrou) * Date: 2010-11-12 21:24Here is the Nth patch for a globals/builtins cache. As other caches at the same kind, it shows very small to no gain on non-micro benchmarks, showing that contrary to popular belief, globals/builtins lookup are not a major roadblock in today's Python performance. However, this patch could be useful in combination with other optimizations such as issue10399. Indeed, using the globals/builtins version id, it is easy and very cheap to detect whether the function pointed to by a global name has changed or not. As for micro-benchmarks, they show that there is indeed a good improvement on builtins lookups: $ ./python -m timeit "x=len;x=len;x=len;x=len;x=len;x=len;x=len;x=len;x=len;x=len;" -> without patch: 1000000 loops, best of 3: 0.282 usec per loop -> with patch: 10000000 loops, best of 3: 0.183 usec per loopmsg121105 - (view) Author: Skip Montanaro (skip.montanaro) * Date: 2010-11-13 01:56
Might such a cache lay the groundwork for more aggressive optimizations by JITs like Unladen Swallow?msg121147 - (view) Author: Brett Cannon (brett.cannon) * Date: 2010-11-13 18:03
Unladen actually has something like this in place for performance optimizations. Not sure how Antoine's approach differs, though.msg121150 - (view) Author: Antoine Pitrou (pitrou) * Date: 2010-11-13 18:14
There aren't many possible approaches. The more complex variants of globals caches try to also speedup writes, which is IMO a waste of time since rebinding globals is not a good coding practice, and especially not in the middle of time-critical loops. (by the way, the patch only addresses normal functions, but generators would easily benefit from a similar treatment) And Skip is right that this would be most useful when paired with a JIT (allowing for aggressive specialization, and possibly inlining).msg282608 - (view) Author: Inada Naoki (methane) * Date: 2016-12-07 09:57
dict has ma_version for now. @haypo, how do you think about this patch? Would you reimplement global cache? Or may I update this patch?msg358864 - (view) Author: Inada Naoki (methane) * Date: 2019-12-25 13:42
This is implemented in #26219.Date User Action Args 2022-04-11 14:57:08 admin set github: 54610 2019-12-25 13:42:25 methane set status: open -> closed
stage: patch review -> resolved
2016-12-07 09:57:49 methane set messages: + msg282608RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4