Computer >> Máy Tính >  >> Lập trình >> Python

Tại sao Python lại chậm hơn các ngôn ngữ khác?

Python là một ngôn ngữ kịch bản trong khi C là một ngôn ngữ lập trình. C / C ++ tương đối nhanh so với Python vì khi bạn chạy tập lệnh Python, trình thông dịch của nó sẽ diễn giải từng dòng tập lệnh và tạo đầu ra nhưng trong C, trình biên dịch trước tiên sẽ biên dịch nó và tạo ra đầu ra được tối ưu hóa liên quan đến phần cứng. Trong trường hợp các ngôn ngữ khác như Java và.NET, Java bytecode và .NET bytecode tương ứng chạy nhanh hơn Python vì trình biên dịch JIT biên dịch bytecode thành mã gốc trong thời gian chạy. CPython không thể có trình biên dịch JIT vì bản chất động của Python khiến việc viết một trình biên dịch trở nên khó khăn.

Tại sao Python lại chậm hơn các ngôn ngữ khác?

Sự khác biệt

Như chúng ta đã biết, Python là một ngôn ngữ thông dịch, trong khi C là một ngôn ngữ biên dịch. Mã được thông dịch luôn chậm hơn mã máy trực tiếp bởi vì để thực hiện một lệnh được thông dịch thì cần nhiều lệnh hơn để triển khai một lệnh máy thực tế. Trước khi chương trình có thể thực hiện công việc thực tế, CPU phải hiểu các lệnh Python. Vì vậy, trình thông dịch Python kiểm tra từng câu lệnh theo các quy tắc của ngôn ngữ Python như phân bổ bộ nhớ để lưu trữ các biến, lọc ra các khoảng trống và nhận xét từ chương trình và các tác vụ liên quan khác. Quá trình này được lặp lại cho từng dòng của chương trình và làm tăng đáng kể chi phí thực thi chương trình.

Tại sao Python lại chậm hơn các ngôn ngữ khác?

C là nhanh

Mặt khác, C không mất nhiều thời gian cho việc kiểm tra lại mã nguồn và nhanh chóng chuyển đổi thành các lệnh của CPU. Trước khi thực thi, một trình biên dịch riêng biệt sẽ chuyển đổi chương trình ngôn ngữ của con người thành các lệnh của CPU, kiểm tra lỗi, cấp phát bộ nhớ và các biến, xóa các nhận xét và khoảng trống, đồng thời tối ưu hóa các hướng dẫn kết quả. Kết quả của mã đã biên dịch được liên kết với các mã được tạo sẵn khác và kết quả là bạn sẽ nhận được các lệnh CPU vững chắc, sẵn sàng thực hiện công việc được giao mà không cần chuẩn bị nhiều. Về mặt nội bộ, lý do khiến mã Python thực thi chậm hơn là mã được thông dịch trong thời gian chạy thay vì được biên dịch thành mã gốc tại thời điểm biên dịch.