Trước hết, Python 3 (.x) là một ngôn ngữ, trong đó có thể có bất kỳ số lần triển khai nào. Được rồi, cho đến ngày nay không thực hiện trừ CPython thực sự triển khai các phiên bản ngôn ngữ đó. Nhưng điều đó sẽ thay đổi (PyPy đang bắt kịp).
Để trả lời câu hỏi bạn muốn đặt ra: CPython, 3.x hoặc cách khác, không, không bao giờ làm, và có khả năng sẽ không bao giờ chứa trình biên dịch JIT. Một số triển khai Python khác (PyPy nguyên bản, Jython và IronPython bằng cách tái sử dụng các trình biên dịch JIT cho các máy ảo mà chúng xây dựng trên) có trình biên dịch JIT. Và không có lý do gì mà các trình biên dịch JIT của chúng sẽ ngừng hoạt động khi chúng thêm hỗ trợ Python 3.
Nhưng trong khi tôi đang ở đây, cũng cho tôi địa chỉ một quan niệm sai lầm:
Thông thường một trình biên dịch JIT là điều duy có thể cải thiện màn trình diễn trong ngôn ngữ thông dịch
Đây không phải là chính xác. Một trình biên dịch JIT, ở dạng cơ bản nhất của nó, chỉ đơn thuần loại bỏ chi phí thông dịch, mà nó giải thích cho một số chậm lại mà bạn thấy, nhưng không phải cho đa số. Trình biên dịch JIT cũng thực hiện một loạt các tối ưu hóa để loại bỏ chi phí cần thiết để triển khai nhiều tính năng Python nói chung (bằng cách phát hiện các trường hợp đặc biệt cho phép thực hiện hiệu quả hơn), các ví dụ nổi bật là nhập động, đa hình và các tính năng nội suy khác nhau.
Chỉ cần triển khai trình biên dịch không hỗ trợ điều đó. Bạn cần tối ưu hóa rất thông minh, hầu hết trong số đó chỉ hợp lệ trong các trường hợp rất cụ thể và trong một thời gian giới hạn. Các trình biên dịch JIT có dễ dàng ở đây, vì chúng có thể tạo mã chuyên biệt vào thời gian chạy (đó là toàn bộ điểm), có thể phân tích chương trình dễ dàng hơn (và chính xác hơn) bằng cách quan sát nó khi nó chạy và có thể hoàn tác tối ưu hóa khi chúng trở thành không hợp lệ. Họ cũng có thể tương tác với các thông dịch viên, không giống như các trình biên dịch trước thời hạn, và thường làm điều đó bởi vì đó là một quyết định thiết kế hợp lý. Tôi đoán đây là lý do tại sao họ được liên kết với thông dịch viên trong tâm trí của mọi người, mặc dù họ có thể và tồn tại độc lập.
Ngoài ra còn có các cách tiếp cận khác để thực hiện Python nhanh hơn, ngoài việc tối ưu hóa mã của trình thông dịch - ví dụ, dự án HotPy (2). Nhưng những người hiện đang trong giai đoạn nghiên cứu hoặc thử nghiệm, và vẫn chưa thể hiện hiệu quả của họ (và sự trưởng thành) w.r.t. mã thực.
Và tất nhiên, hiệu suất của chương trình cụ thể tùy thuộc vào chương trình chính nó nhiều hơn so với việc triển khai ngôn ngữ. Việc thực hiện ngôn ngữ chỉ đặt giới hạn trên cho tốc độ bạn có thể tạo một chuỗi các hoạt động. Nói chung, bạn có thể cải thiện hiệu suất của chương trình tốt hơn nhiều chỉ đơn giản bằng cách tránh việc không cần thiết, tức là bằng cách tối ưu hóa chương trình. Điều này đúng bất kể bạn chạy chương trình thông qua trình thông dịch, trình biên dịch JIT hay trình biên dịch trước thời hạn. Nếu bạn muốn một cái gì đó để được nhanh chóng, không đi ra khỏi con đường của bạn để có được tại một thực hiện ngôn ngữ nhanh hơn. Có những ứng dụng không khả thi với chi phí giải thích và năng động, nhưng chúng không phổ biến như bạn nghĩ (và thường, được giải quyết bằng cách gọi vào mã được biên dịch mã một cách chọn lọc).
PyPy có JIT: http://doc.pypy.org/en/latest/jit/index.html – rubik
@rubik cảm ơn nhưng tôi đã tìm kiếm giải pháp cho python 3 không phải python 2 và cho người phiên dịch chính thức, không phải bất kỳ thông dịch viên nào khác. – guz
Mặc dù pypy chưa hỗ trợ python 3. Tùy thuộc vào những gì bạn đang làm, có tất cả các cách để cải thiện hiệu suất - ví dụ, sử dụng các thuật toán tốt hơn, song song bằng cách sử dụng mô-đun 'multiprocssing' hoặc' threading' hoặc viết mở rộng trong C (có thể được thực hiện dễ dàng hơn bằng cách sử dụng [cython] (http://cython.org/) hoặc phần mềm tương tự). – James