Skip to content

Specialize BINARY_OP by refcount and by type of operands #117581

Closed
@markshannon

Description

@markshannon

Instead of the fairly limited ad-hoc specialization we currently use, we should specialize BINARY_OP by refcount and use table lookup to specialize by type.

Doing so would have the following advantages:

  • Increased specialization from ~70% to over 95%
  • Potential for large performance improvement in tier 2
  • Makes it easy to incorporate BINARY_SUBSCR into BINARY_OP freeing up several tier 1 opcodes
  • Can use similar techniques for CONTAINS_OP and COMPARE_OP to free up more tier 1 opcodes

I expect the overall performance impact on tier 1 will be negligible. Maybe a little bit faster, maybe a little bit slower.
The improved specialized will (I expect) largely cancel out the degraded performance for the most common operations.

See for faster-cpython/ideas#662 detailed analysis and faster-cpython/ideas#660 for the related tier 2 optimization

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    interpreter-core(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions