Hướng dẫn is python slow or fast? - python chậm hay nhanh?

Python cực kỳ phổ biến vì nó dễ học, linh hoạt và có hàng ngàn thư viện hữu ích cho khoa học dữ liệu. Nhưng một điều không phải là nhanh. & NBSP;

Điều đó sắp thay đổi trong Python 3.11, hiện đang trong giai đoạn beta đầu tiên của bản xem trước [phiên bản 3.11.0b1] trước khi phát hành ổn định vào cuối năm nay. Nhà phát triển Core Python [CPython] Mark Shannon đã chia sẻ chi tiết về dự án để làm cho Python nhanh hơn tại hội nghị Pycon 2022 trong tuần này, nơi các nhà phát triển cũng thể hiện tiến trình về mục tiêu chạy mã Python trong trình duyệt. & NBSP;

Năm ngoái, Microsoft đã tài trợ cho một dự án cho Quỹ phần mềm Python [PSF], do nhà sáng tạo Python Guido Van Rossum và Shannon dẫn đầu, để làm cho Python nhanh gấp đôi so với loạt 3.10 ổn định hiện tại. Tầm nhìn là đẩy Python hướng tới hiệu suất của C. & NBSP;

Xem: & NBSP; Làm thế nào để được thăng chức: Năm cách để leo lên thang và có một sự nghiệp thành công

Microsoft đã thuê Van Rossum vào năm 2020 & NBSP; và đưa cho anh ta một bàn tay miễn phí để chọn bất kỳ dự án nào. Tại hội nghị Pycon 2021 năm ngoái, ông nói rằng ông "chọn quay trở lại cội nguồn của tôi" và sẽ làm việc với sự thiếu hiệu suất nổi tiếng của Python. & NBSP;

Hiệu suất, có lẽ, không phải là ưu tiên hàng đầu của Python vì việc áp dụng đã được thúc đẩy bởi học máy và khoa học dữ liệu nhờ dòng chảy tenor, numpy, pandas và nhiều nền tảng khác, như SDK BOTO3 của AWS cho Python. Các nền tảng này được tải xuống hàng chục triệu lần mỗi tháng và được sử dụng trong các môi trường thường không bị hạn chế bởi phần cứng. & NBSP;

Dự án CPython nhanh hơn & NBSP; đã cung cấp một số cập nhật về hiệu suất CPython 3.11 trong năm qua. Trước PYCON 2022, dự án đã công bố nhiều kết quả hơn so sánh bản xem trước 3.11 beta với 3.10 trên hàng chục số liệu hiệu suất, cho thấy 3.11 là nhanh hơn 1,25 lần so với 3,10. & NBSP;

Shannon thực tế về khả năng cải thiện hiệu suất của dự án, nhưng tin rằng những cải tiến có thể mở rộng việc sử dụng khả thi của Python cho các máy ảo hơn. & NBSP;

"Python được thừa nhận rộng rãi là chậm. Trong khi Python sẽ không bao giờ đạt được hiệu suất của các ngôn ngữ cấp thấp như C, Fortran, hoặc thậm chí Java, chúng tôi muốn nó cạnh tranh với việc triển khai nhanh chóng các ngôn ngữ kịch bản, như V8 cho Javascript hoặc Luajit cho Lua, "Ông viết & nbsp; năm ngoái trong đề xuất tăng cường Python [PEP] 659. & nbsp;

"Cụ thể, chúng tôi muốn đạt được các mục tiêu hiệu suất này với CPython để mang lại lợi ích cho tất cả người dùng Python bao gồm những người không thể sử dụng PYPY hoặc các máy ảo thay thế khác." & NBSP;

Cách tiếp cận chính được nêu chi tiết trong PEP 659 là "người phiên dịch thích ứng, chuyên biệt, chuyên về mã mạnh mẽ, nhưng trên một khu vực rất nhỏ và có thể điều chỉnh theo chuyên môn hóa nhanh chóng và với chi phí thấp."

Như đã lưu ý, tối ưu hóa cho VM là "đắt tiền", thường đòi hỏi thời gian "khởi động" dài. Để tránh chi phí thời gian này, VM nên "suy đoán rằng chuyên môn hóa là hợp lý ngay cả sau khi thực hiện một vài chức năng", do đó, trình thông dịch cần tối ưu hóa và giảm tối ưu hóa liên tục và rất rẻ. & NBSP;

Điều này sẽ dẫn đến một trình thông dịch nhanh hơn cho CPython theo dõi các byte cá nhân trong quá trình thực hiện chương trình. Công việc trên trình thông dịch mới gần như hoàn tất nhưng vẫn yêu cầu hoàn thành các chuyên ngành động cho các vòng lặp và hoạt động nhị phân, theo PSF. & nbsp;

Ngoài ra, mức tiêu thụ bộ nhớ trong 3.11 đã không thay đổi từ 3.10.

Xem: & nbsp; các nhà phát triển đang phải đối mặt với sự kiệt sức. Đây là cách các công ty đang cố gắng sửa chữa nó & nbsp; 

Về câu hỏi về trình biên dịch chỉ trong thời gian [JIT] cho hiệu suất của Python, Shannon cho rằng đây không phải là ưu tiên hàng đầu và có thể sẽ không đến cho đến Python 3.13, theo phạm vi bảo hiểm của Python Software Foundation về sự kiện. & NBSP;

Anaconda, nhà sản xuất phân phối Python Anaconda Python cho Khoa học dữ liệu, đang ủng hộ Dự án Pyston, một triển khai Python hứa hẹn cải thiện tốc độ so với Python. & NBSP;

Một trong những nỗ lực cũ của Anaconda để tăng tốc độ Python là Dự án Numba, trình biên dịch JIT dựa trên LLVM cho CPython, giúp tăng tốc các chức năng Python số chạy trên CPU hoặc GPU, nhưng không thể tối ưu hóa toàn bộ chương trình và không giải quyết việc sử dụng Python rộng hơn các trường hợp. Một người khác là PYPY, việc triển khai CPython với trình biên dịch JIT để thực hiện nhanh hơn. & nbsp; & nbsp;

Theo Kế hoạch triển khai Python nhanh hơn, CPython 3.12 có thể có được "trình biên dịch JIT đơn giản cho các vùng nhỏ" biên dịch các vùng nhỏ của mã chuyên dụng, trong khi 3.13 sẽ tăng cường trình biên dịch để mở rộng các vùng để biên dịch. & NBSP;

Mã nguồn mở

Tôi nghĩ rằng câu trả lời của Keyle [trong số những người khác] mang đến một điểm cơ bản: một lượng lớn phụ thuộc vào cách bạn làm mọi việc. Liên kết đó đã đưa ra hai câu trả lời cho C ++, nhưng tôi có một thời gian khó tin rằng bất kỳ ai cũng sẽ viết C ++ giống như một trong hai. Nỗ lực đầu tiên của tôi sẽ trông giống như thế này:

#include 
#include 
#include 

class person { 
    int count_;
    static int current_;
public:
    person[] : count_[++current_] {}
    int count[] { return count_; }
};
int person::current_ = 0;
typedef std::vector plist;
class chain {
    plist people_;
    void check_wrap[std::vector::iterator &p] {
        if [p==people_.end[]]
            p = people_.begin[];
    }
    void advance[std::vector::iterator &p, int places] {
        for [int i=0; i1] {
            advance[current, n];
            current = people_.erase[current];
            check_wrap[current];
        }
        return &[*current];
    }
};
int main[] {
    const int ITER = 1000000;  
    clock_t start = clock[];
    for[int i = 0 ; i 

Bài Viết Liên Quan

Chủ Đề