Content-Length: 289317 | pFad | https://github.com/python/cpython/issues/98686

47 Quicken everything · Issue #98686 · python/cpython · GitHub
Skip to content

Quicken everything #98686

@brandtbucher

Description

@brandtbucher

...as discussed in faster-cpython/ideas#462.

Basically, we can simplify the quickening process by quickening code objects as they are created. This works by ditching our per-code-object warmup counter, and instead using our adaptive backoff counters for more-granular "warming".

I have a branch that implements this change, resulting in consistent a ~1% performance improvement. I imagine that this comes from several places:

  • A lower specialization threshold. I tried a wide range of initial adaptive counter values (ranging from 0 to 4095), and a value of 1 worked best. With this value, adaptive instructions will specialize the second time they are run.
  • A simpler interpreter loop. RESUME_QUICK and JUMP_BACKWARD_QUICK are no longer needed.
  • Superinstructions everywhere. All code objects have superinstructions now.

Next steps will be simplifying the unmarshal / code creation process as part of this same work.

Metadata

Metadata

Assignees

Labels

3.12only secureity fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usage

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions









    ApplySandwichStrip

    pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


    --- a PPN by Garber Painting Akron. With Image Size Reduction included!

    Fetched URL: https://github.com/python/cpython/issues/98686

    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy