Python 3.13 bổ sung trình biên dịch JIT
- Nhà phát triển lõi CPython Brandt Bucher đã gửi một pull request để bổ sung trình biên dịch JIT vào nhánh Python 3.13.
- Thay đổi này sẽ là một trong những thay đổi lớn nhất của trình thông dịch CPython kể từ trình thông dịch thích ứng chuyên biệt được thêm vào Python 3.11.
JIT là gì?
- Biên dịch JIT (Just in Time) là một thiết kế trong đó việc biên dịch diễn ra khi mã được chạy lần đầu.
- Trình biên dịch JIT là trình biên dịch tạo ra mã máy, đối lập với trình biên dịch AOT (Ahead of Time).
- Mã Python trước tiên được biên dịch thành bytecode; bytecode này không có ý nghĩa trực tiếp với CPU và được thực thi thông qua một vòng lặp trình thông dịch bytecode chuyên biệt.
copy-and-patch JIT là gì?
- copy-and-patch JIT là một khái niệm được đề xuất vào năm 2021, được thiết kế như một thuật toán nhanh cho runtime của ngôn ngữ động.
- copy-and-patch JIT là ý tưởng sao chép các chỉ thị cho từng lệnh và điền (patch) các đối số bytecode.
Ưu và nhược điểm của copy-and-patch JIT
- Trong khi trình biên dịch JIT “đầy đủ” biên dịch bytecode cấp cao thành các chỉ thị cấp thấp của ngôn ngữ trung gian (IL), thì copy-and-patch JIT thực hiện việc biên dịch từ bytecode sang mã máy bằng một tập hợp các mẫu.
- copy-and-patch JIT không cần chạy một kiến trúc trình biên dịch JIT phức tạp bên trong runtime Python; chỉ cần cài đặt công cụ LLVM JIT trên máy dùng để biên dịch CPython từ mã nguồn.
JIT này hoạt động như thế nào?
- Nó mở rộng API mới được bổ sung vào Python 3.13 để các trình tối ưu hóa có thể cắm được có thể được phát hiện trong runtime.
- JIT mới là một trình tối ưu hóa tùy chọn cho kiến trúc mới này.
- Khi biên dịch CPython từ mã nguồn, cung cấp cờ
--enable-experimental-jit sẽ tạo ra các mẫu mã máy cho bytecode Python.
JIT này có nhanh hơn không?
- Các benchmark ban đầu cho thấy mức cải thiện hiệu năng khoảng 2-9%.
- JIT này là nền tảng cho một loạt tối ưu hóa có thể cải thiện đáng kể hiệu năng của Python.
Ý kiến của GN⁺
- Trình biên dịch JIT được thêm vào Python 3.13 là một thay đổi quan trọng giúp cải thiện tốc độ thực thi của Python, đặc biệt có thể tăng hiệu quả cho các tác vụ lặp lại.
- copy-and-patch JIT mang đến một cách tiếp cận đổi mới để cải thiện hiệu năng mà không cần tích hợp một kiến trúc JIT phức tạp vào runtime Python của người dùng.
- Công nghệ này được kỳ vọng sẽ tạo ra những thảo luận thú vị trong cộng đồng Python và mở ra cánh cửa mới cho việc tối ưu hiệu năng của Python.
1 bình luận
Ý kiến Hacker News