python / python/cpython

Remove `DELETE_FAST` bytecode instruction

Đang mở
#145,749 4 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

3.15 interpreter-core performance
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

DELETE_FAST has two uses:

  1. delete var where var is a local variable
  2. Cleaning up at the end of a named exception block.

A local variable can be deleted with the sequence PUSH_NULL; STORE_FAST var.

Deleting a local variable

Instead of DELETE_FAST n we can emit LOAD_FAST n; POP_TOP n; PUSH_NULL; STORE_FAST n which the bytecode optimizer will reduce to PUSH_NULL; STORE_FAST n in most cases.

Cleaning up at the end of a named exception block.

We currently emit the sequence: LOAD_CONST None; STORE_FAST n; DELETE_FAST n
which can be replaced with PUSH_NULL; STORE_FAST n

This case is far more common than explicitly deleting a local variable, so we can reduce code size as well as freeing up an opcode.


See https://github.com/faster-cpython/ideas/issues/490

Linked PRs
  • gh-145983

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách lần theo các điểm vào của compiler phát ra DELETE_FAST cho việc xóa biến cục bộ và dọn dẹp exception được đặt tên. So sánh đầu ra bytecode của chúng với các chuỗi PUSH_NULL; STORE_FAST được đề xuất, sau đó xác minh rằng DELETE_FAST không còn được phát ra và các bài kiểm thử bytecode hiện có vẫn vượt qua; issue tham chiếu đến PR được liên kết gh-145983.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
compilers
Loại issue
Tái cấu trúc
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.