Nhưng có giới hạn kỹ thuật hoặc tính năng ngôn ngữ nào ngăn tập lệnh Python của tôi nhanh như chương trình C ++ tương đương không?
Không. Đó chỉ là một câu hỏi về tiền bạc và tài nguyên đổ vào khiến C ++ chạy nhanh so với tiền và tài nguyên đổ vào khiến Python chạy nhanh.
Ví dụ, khi Self VM xuất hiện, nó không chỉ là ngôn ngữ OO động nhanh nhất, nó là thời kỳ ngôn ngữ OO nhanh nhất. Mặc dù là một ngôn ngữ cực kỳ năng động (chẳng hạn như nhiều hơn Python, Ruby, PHP hoặc JavaScript), nhưng nó nhanh hơn hầu hết các triển khai C ++ có sẵn.
Nhưng sau đó, Sun đã hủy dự án Self (một ngôn ngữ OO có mục đích chung để phát triển các hệ thống lớn) để tập trung vào một ngôn ngữ kịch bản nhỏ cho các menu hoạt hình trong các hộp trên TV (bạn có thể đã nghe về nó, nó được gọi là Java), không có tài trợ nhiều hơn. Đồng thời, Intel, IBM, Microsoft, Sun, Metrowerks, HP et al. đã chi rất nhiều tiền và tài nguyên để làm cho C ++ nhanh chóng. Các nhà sản xuất CPU đã thêm các tính năng vào chip của họ để làm cho C ++ nhanh chóng. Hệ điều hành đã được viết hoặc sửa đổi để làm cho C ++ nhanh chóng. Vì vậy, C ++ là nhanh chóng.
Tôi không quen thuộc lắm với Python, tôi là một người Ruby hơn, vì vậy tôi sẽ đưa ra một ví dụ từ Ruby: Hash
lớp (tương đương về chức năng và tầm quan trọng của dict
Python) trong triển khai Ruby của Rubinius được viết bằng Ruby thuần túy 100%; Tuy nhiên, nó cạnh tranh thuận lợi và đôi khi còn vượt trội so với Hash
lớp trong YARV được viết bằng tay C. được tối ưu hóa và so với một số hệ thống Lisp hoặc Smalltalk thương mại (hoặc Self VM được đề cập ở trên), trình biên dịch của Rubinius thậm chí còn không thông minh .
Không có gì vốn có trong Python làm cho nó chậm. Có những tính năng trong bộ xử lý và hệ điều hành ngày nay làm tổn thương Python (ví dụ bộ nhớ ảo được biết là khủng khiếp đối với hiệu suất thu gom rác). Có những tính năng giúp C ++ nhưng không giúp Python (CPU hiện đại cố gắng tránh bỏ lỡ bộ đệm, vì chúng rất tốn kém. Thật không may, tránh bỏ lỡ bộ nhớ cache là khó khăn khi bạn có OO và đa hình. bỏ lỡ. CPU Azul Vega, được thiết kế cho Java, thực hiện điều này.)
Nếu bạn chi nhiều tiền, nghiên cứu và tài nguyên để tạo Python nhanh, như đã làm cho C ++ và bạn dành nhiều tiền, nghiên cứu và tài nguyên cho việc tạo các hệ điều hành làm cho các chương trình Python chạy nhanh như đã làm cho C ++ và bạn chi tiêu như nhiều tiền, nghiên cứu và tài nguyên để tạo ra các CPU làm cho các chương trình Python chạy nhanh như đã làm cho C ++, không còn nghi ngờ gì nữa, tôi nghĩ rằng Python có thể đạt được hiệu năng tương đương với C ++.
Chúng tôi đã thấy với ECMAScript những gì có thể xảy ra nếu chỉ một người chơi nghiêm túc về hiệu suất. Trong vòng một năm, về cơ bản, chúng tôi đã tăng hiệu suất gấp 10 lần cho tất cả các nhà cung cấp lớn.