[New-bugs-announce] [issue28158] Implement LOAD_GLOBAL opcode cache
report at bugs.python.org
Wed Sep 14 16:48:00 EDT 2016
New submission from Yury Selivanov:
The attached patch implements an opcode cache for LOAD_GLOBAL opcode, making it 2x faster.
The idea is to use the new co_extra field of code objects & PEP 509 to attach a cache structure pointing directly to the resolved global name. When globals or builtins are updated, the cache is invalidated.
The patch adds a new file "ceval_cache.h" which provides some infrastructure to ease the pain of implementing new caches for other opcode types. I can strip down all macros from that file if Victor finds it too hard to review.
Here's a simple script I used to make sure that the cache is working: https://gist.github.com/1st1/a9660aabdcf6b8bc6205b9fe39a82bba
You can also set OPCACHE_COLLECT_STATS to 1 to get debug stats output for the cache.
components: Interpreter Core
nosy: gvanrossum, haypo, yselivanov
stage: patch review
title: Implement LOAD_GLOBAL opcode cache
versions: Python 3.6
Added file: http://bugs.python.org/file44668/load_globals_cache.patch
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce