python / python/cpython

Some (mostly) easy ways to reduce the size of JIT generated code

未关闭
#145,742 2 条评论 1 个 reaction 已指派 1 人 在 GitHub 查看

@corona10 已经在做这个了。

开始于 2026年3月24日。

interpreter-core performance topic-JIT type-feature
主要语言
Python
星标
77.2k
派生
35.9k
PR 合并指标
PR 指标待抓取

描述

Reducing the size of JIT generated code makes it faster, often super-linearly as there is less code to execute and less code to fill caches.

Looking at the top instructions from old but mostly still valid stats there are a few opportunities to reduce code size:

_SET_IP

Most uses of _SET_IP are setting the ip just in case something wants to inspect it. For these cases, we could store a 16 bit offset instead of the full 64 bit pointer. Code that reads the instruction pointer would need updating, but this should reduce the overhead of _SET_IP by more than half.

_LOAD_CONST_INLINE_BORROW and similar

We can do the tagging when generating the code, instead of while executing. This only saves a single instruction, but it helps.

_LOAD_FAST_BORROW

We already replicate _LOAD_FAST_BORROW, but that still leaves most _LOAD_FAST_BORROW using the slower version, and bloating the stencils.
We could manually generate the code, it is only a couple of instructions, reducing stencil bloat and covering all operands

Linked PRs
  • gh-148081
  • gh-148217
  • gh-148436

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。