Hướng dẫn what is the fastest python? - con trăn nhanh nhất là gì?

Phiên bản Python mới hơn nhanh hơn phiên bản trước. Python 3.8 đi kèm với rất nhiều sửa đổi giúp tăng cường hiệu suất của nó. Chúng ta không thể hiểu được hiệu suất của Python là thường có sự thỏa hiệp giữa ngôn ngữ linh hoạt, động, so với hiệu suất. Chúng ta không thể có mọi thứ cùng một lúc. Để kiểm tra hiệu suất của Python, lập trình viên nên áp dụng các triển khai thay thế. Python là một ngôn ngữ được giải thích, đồng thời nó cũng cung cấp cơ sở để biên dịch mã nguồn vào mã byte chạy trên máy ảo. Chúng ta có thể sử dụng trình biên dịch khác nhau cho mục đích khác nhau để cung cấp cho chúng ta một lợi thế hiệu suất.

Trong hướng dẫn này, chúng ta sẽ thấy sự triển khai khác nhau của Python.

Pypy

Pypy là một trong những trình biên dịch thay thế phổ biến nhất được nhà phát triển Python sử dụng để đạt được tốc độ cao hơn. PYPY hoạt động trên trình biên dịch JIT (chỉ trong thời gian) biên dịch phần mã giúp tăng cường hiệu suất. Nó cũng quản lý bộ nhớ một cách hiệu quả bằng cách sử dụng các cải tiến GC. Nó hỗ trợ chế độ Stackless có thể hoạt động với luồng vi mô cho đồng thời.GC improvements. It supports the stackless mode that can work with the micro-thread for concurrency.

Các lập trình viên có tranh chấp về cái nào là nhanh nhất - pypy và cpython, nhưng sự đồng thuận chung là pypy nhanh hơn.

Cpython

CPython là trình biên dịch Python được sử dụng phổ biến nhất được viết bằng C. Đây là một trình biên dịch mặc định. Cpython chuyển đổi mã nguồn thành mã byte trung gian và chạy nó bằng cách sử dụng máy ảo CPython. Cpython cũng hoạt động với chế độ Stackless cung cấp trình vi mô cho đồng thời.CPython Virtual Machine. CPython also works with the stackless mode that provides the micro-thread for concurrency.

Jpython hoặc jpython

Chúng ta có thể giả định rằng Jpython là việc triển khai Python của Java. Nó cho phép tập lệnh Python hợp nhất có thể sử dụng trên nền tảng Java. Các lập trình viên Java sẽ sử dụng nó liên kết tập lệnh Python vào các ứng dụng Java lớn. Chúng tôi cũng có thể sử dụng các chủ đề Java để viết các chương trình nhiều luồng. Nó cung cấp một số tốc độ nhưng chậm hơn so với cpython. Python có thể được cung cấp hiệu quả thêm trong phát triển ứng dụng Java quy mô lớn.slower than the CPython. Python can be provided the extra efficiency in large scale Java application development.

Ironpython

Ironpython là việc thực hiện Python được sử dụng để làm việc với .NET. Chúng ta có thể sử dụng các thư viện .NET thông qua các tập lệnh Python. Nó không hỗ trợ Gil; Điều đó có nghĩa là hiệu suất của mã đa luồng tốt hơn nhiều so với mã khác. Nó cung cấp cơ sở mà chúng ta có thể làm việc trên máy chủ web bằng khung Python thay vì ASP.NET.

Nuitka

Nuitka là một trình biên dịch mới được tạo và không đủ như các trình biên dịch khác nhưng nó tổng hợp mã Python trong C/C ++ thực thi. Nó có thể hoạt động với mọi phiên bản Python từ 2,6 đến 3,8 và nhanh hơn hai lần so với CPython. Chúng ta có thể sử dụng Nuitka để phát triển thực thi độc lập cho mã Python ngay cả trên Windows.

Đây là tất cả về việc thực hiện khác nhau của Python. Bạn có thể tìm thấy Cpython nhanh hơn các trình biên dịch khác nhưng nó cũng phụ thuộc vào các trường hợp sử dụng khác nhau.

Chủ đề tiếp theo##

Python là một trong những ngôn ngữ lập trình phổ biến nhất trong số các nhà phát triển, nhưng nó có những hạn chế nhất định. Ví dụ, tùy thuộc vào ứng dụng, nó có thể chậm gấp 100 lần so với một số ngôn ngữ cấp thấp hơn. Đó là lý do tại sao nhiều công ty viết lại các ứng dụng của họ bằng một ngôn ngữ khác khi tốc độ Python, trở thành nút cổ chai cho người dùng. Nhưng điều gì sẽ xảy ra nếu có một cách để giữ cho các tính năng tuyệt vời của Python và cải thiện tốc độ của nó? Nhập pypy.

Pypy là một thông dịch viên Python rất tuân thủ, là một sự thay thế xứng đáng cho Cpython 2.7, 3.6 và chẳng mấy chốc 3.7. Bằng cách cài đặt và chạy ứng dụng của bạn với nó, bạn có thể đạt được các cải tiến tốc độ đáng chú ý. Bao nhiêu cải tiến mà bạn sẽ thấy phụ thuộc vào ứng dụng mà bạn đang chạy. is a very compliant Python interpreter that is a worthy alternative to CPython 2.7, 3.6, and soon 3.7. By installing and running your application with it, you can gain noticeable speed improvements. How much of an improvement you’ll see depends on the application you’re running.

Trong hướng dẫn này, bạn sẽ học:

  • Cách cài đặt và chạy mã của bạn bằng PypyPyPy
  • Cách pypy so sánh với cpython về tốc độCPython in terms of speed
  • Các tính năng của pypy là gì và cách chúng làm cho mã python của bạn chạy nhanh hơnfeatures are and how they make your Python code run faster
  • Những hạn chế của Pypy là gìlimitations are

Các ví dụ trong hướng dẫn này sử dụng Python 3.6 vì đó là phiên bản mới nhất của Python mà Pypy tương thích.

Python và Pypy

Thông số kỹ thuật ngôn ngữ Python được sử dụng trong một số triển khai như CPython (được viết bằng C), Jython (được viết bằng Java), Ironpython (viết cho .NET) và PYPY (được viết bằng Python).

Cpython là triển khai ban đầu của Python và cho đến nay là phổ biến nhất và được duy trì nhất. Khi mọi người đề cập đến Python, họ thường xuyên hơn không có nghĩa là cpython. Bạn có thể sử dụng Cpython ngay bây giờ!

Tuy nhiên, vì nó là một ngôn ngữ được giải thích cấp cao, Cpython có những hạn chế nhất định và giành được giành được bất kỳ huy chương nào cho tốc độ. Đó là nơi mà Pypy có thể có ích. Vì nó tuân thủ đặc tả ngôn ngữ Python, PyPY không yêu cầu thay đổi cơ sở mã của bạn và có thể cung cấp các cải tiến tốc độ đáng kể nhờ các tính năng mà bạn sẽ thấy dưới đây.

Bây giờ, bạn có thể tự hỏi tại sao Cpython không thực hiện các tính năng tuyệt vời của Pypy, nếu họ sử dụng cùng một cú pháp. Lý do là việc thực hiện các tính năng đó sẽ đòi hỏi những thay đổi lớn đối với mã nguồn và sẽ là một công việc chính.

Không cần lặn quá nhiều vào lý thuyết, hãy để Lôi thấy Pypy hoạt động.

Cài đặt

Hệ điều hành của bạn có thể đã cung cấp gói Pypy. Ví dụ, trên macOS, bạn có thể cài đặt nó với sự trợ giúp của homebrew:

Nếu không, bạn có thể tải xuống một nhị phân được xây dựng sẵn cho hệ điều hành và kiến ​​trúc của bạn. Khi bạn hoàn thành tải xuống, nó chỉ là vấn đề giải nén tệp tarball hoặc zip. Sau đó, bạn có thể thực hiện PYPY mà không cần phải cài đặt nó ở bất cứ đâu:

$ tar xf pypy3.6-v7.3.1-osx64.tar.bz2 $ ./pypy3.6-v7.3.1-osx64/bin/pypy3 Python 3.6.9 (?, Jul 19 2020, 21:37:06) [PyPy 7.3.1 with GCC 4.2.1] Type "help", "copyright", "credits" or "license" for more information.

Trước khi thực thi mã ở trên, bạn cần ở bên trong thư mục nơi bạn đã tải xuống nhị phân. Tham khảo tài liệu cài đặt để biết hướng dẫn đầy đủ.

Pypy trong hành động

Bây giờ bạn đã cài đặt Pypy và bạn đã sẵn sàng để xem nó hoạt động! Để làm điều đó, hãy tạo một tệp Python có tên script.py và đặt mã sau trong đó:

1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}")

Đây là một tập lệnh, trong hai vòng lặp for lồng nhau, thêm các số từ 1 vào 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 0 và in kết quả.

Để xem mất bao lâu để chạy tập lệnh này, chỉnh sửa nó để thêm các dòng được tô sáng:

1import time 2 3start_time = time.time() 4 5total = 0 6for i in range(1, 10000): 7 for j in range(1, 10000): 8 total += i + j 9 10print(f"The result is {total}") 11 12end_time = time.time() 13print(f"It took {end_time-start_time:.2f} seconds to compute")

Mã hiện thực hiện các hành động sau:

  • Dòng 3 tiết kiệm thời gian hiện tại cho biến 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 1. saves the current time to the variable 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 1.
  • Dòng 5 đến 8 chạy các vòng. run the loops.
  • Dòng 10 in kết quả. prints the result.
  • Dòng 12 tiết kiệm thời gian hiện tại cho 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 2. saves the current time to 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 2.
  • Dòng 13 in sự khác biệt giữa 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 1 và 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 2 để hiển thị bao lâu để chạy kịch bản. prints the difference between 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 1 and 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 2 to show how long it took to run the script.

Hãy thử chạy nó với Python. Đây là những gì tôi nhận được trên MacBook Pro 2015 của mình:

$ python3.6 script.py The result is 999800010000 It took 20.66 seconds to compute

Bây giờ hãy chạy nó với Pypy:

$ pypy3 script.py The result is 999800010000 It took 0.22 seconds to compute

Trong điểm chuẩn tổng hợp nhỏ này, Pypy nhanh gấp khoảng 94 lần Python!

Để có điểm chuẩn nghiêm trọng hơn, bạn có thể xem trung tâm tốc độ Pypy, nơi các nhà phát triển chạy điểm chuẩn hàng đêm với các tệp thực thi khác nhau.

Hãy nhớ rằng PYPY ảnh hưởng đến hiệu suất của mã của bạn phụ thuộc vào những gì mã của bạn đang làm. Có một số tình huống trong đó Pypy thực sự chậm hơn, như bạn sẽ thấy sau. Tuy nhiên, ở mức trung bình hình học, nó nhanh gấp 4,3 lần Python.

Pypy và các tính năng của nó

Trong lịch sử, Pypy đã đề cập đến hai điều:

  1. Khung ngôn ngữ động để tạo thông dịch viên cho các ngôn ngữ độngdynamic language framework for generating interpreters for dynamic languages
  2. Một triển khai Python sử dụng khung đóPython implementation using that framework

Bạn đã thấy ý nghĩa thứ hai trong hành động bằng cách cài đặt PYPY và chạy một kịch bản nhỏ với nó. Việc triển khai Python mà bạn đã sử dụng được viết bằng cách sử dụng khung ngôn ngữ động có tên RPython, giống như Cpython được viết bằng C và Jython được viết bằng Java.

Nhưng người sói bạn đã nói trước đó rằng Pypy được viết bằng Python? Chà, đó là một chút đơn giản hóa. Lý do Pypy được biết đến như một thông dịch viên Python được viết bằng Python (và không phải trong rpython) là vì RPython sử dụng cú pháp tương tự như Python.

Để xóa mọi thứ, ở đây, cách thức sản xuất Pypy:

  1. Mã nguồn được viết bằng rpython.

  2. Công cụ dịch RPython được áp dụng cho mã, về cơ bản làm cho mã hiệu quả hơn. Nó cũng biên dịch mã xuống thành mã máy, đó là lý do tại sao người dùng Mac, Windows và Linux phải tải xuống các phiên bản khác nhau.

  3. Một thực thi nhị phân được sản xuất. Đây là trình thông dịch Python mà bạn đã sử dụng để chạy tập lệnh nhỏ của mình.

Hãy nhớ rằng bạn không cần phải thực hiện tất cả các bước này để sử dụng Pypy. Thực thi đã có sẵn để bạn cài đặt và sử dụng.

Ngoài ra, vì nó rất khó hiểu khi sử dụng cùng một từ cho cả khung và việc thực hiện, nhóm đằng sau Pypy quyết định tránh xa việc sử dụng kép này. Bây giờ, Pypy chỉ đề cập đến việc thực hiện Python. Khung được gọi là công cụ dịch rpython.RPython translation toolchain.

Tiếp theo, bạn sẽ tìm hiểu về các tính năng giúp Pypy tốt hơn và nhanh hơn Python trong một số trường hợp.

Trình biên dịch chỉ trong thời gian (JIT)

Trước khi vào phần tổng hợp của JIT, hãy để Lùi lại một bước và xem xét các thuộc tính của các ngôn ngữ được biên dịch như C và các ngôn ngữ được giải thích như JavaScript.

Các ngôn ngữ lập trình được biên dịch có hiệu suất hơn nhưng khó chuyển sang các kiến ​​trúc và hệ điều hành CPU khác nhau. Các ngôn ngữ lập trình được giải thích là di động hơn, nhưng hiệu suất của chúng tồi tệ hơn nhiều so với các ngôn ngữ được biên dịch. Đây là hai thái cực của quang phổ. programming languages are more performant but are harder to port to different CPU architectures and operating systems. Interpreted programming languages are more portable, but their performance is much worse than that of compiled languages. These are the two extremes of the spectrum.

Sau đó, có các ngôn ngữ lập trình như Python thực hiện một sự pha trộn của cả tổng hợp và giải thích. Cụ thể, Python lần đầu tiên được biên dịch thành một mã byte trung gian, sau đó được giải thích bởi CPython. Điều này làm cho mã hoạt động tốt hơn mã được viết bằng ngôn ngữ lập trình được giải thích thuần túy và nó duy trì lợi thế tính di động.intermediate bytecode, which is then interpreted by CPython. This makes the code perform better than code written in a purely interpreted programming language, and it maintains the portability advantage.

Tuy nhiên, hiệu suất vẫn không ở đâu gần phiên bản được biên dịch. Lý do là mã được biên dịch có thể thực hiện rất nhiều tối ưu hóa mà chỉ có thể có với mã byte.

Đó là nơi mà trình biên dịch chỉ trong thời gian (JIT) xuất hiện. Nó cố gắng có được các phần tốt hơn của cả hai thế giới bằng cách thực hiện một số biên dịch thực sự vào mã máy và một số cách giải thích. Tóm lại, đây là các bước mà JIT biên dịch thực hiện để cung cấp hiệu suất nhanh hơn:just-in-time (JIT) compiler comes in. It tries to get the better parts of the both worlds by doing some real compilation into machine code and some interpretation. In a nutshell, here are the steps JIT compilation takes to provide faster performance:

  1. Xác định các thành phần được sử dụng thường xuyên nhất của mã, chẳng hạn như hàm trong vòng lặp.
  2. Chuyển đổi các bộ phận đó thành mã máy trong thời gian chạy.
  3. Tối ưu hóa mã máy được tạo.
  4. Trao đổi triển khai trước đó với phiên bản mã máy được tối ưu hóa.

Bạn có nhớ hai vòng lồng nhau ở đầu hướng dẫn không? PYPY phát hiện ra rằng cùng một hoạt động đã được thực thi nhiều lần, biên dịch nó thành mã máy, tối ưu hóa mã máy và sau đó đổi các triển khai. Đó là lý do tại sao bạn thấy một sự cải thiện lớn như vậy về tốc độ.

Thu gom rác thải

Bất cứ khi nào bạn tạo các biến, chức năng hoặc bất kỳ đối tượng nào khác, máy tính của bạn sẽ phân bổ bộ nhớ cho chúng. Cuối cùng, một số đối tượng đó sẽ không còn cần thiết. Nếu bạn không làm sạch chúng, thì máy tính của bạn có thể hết bộ nhớ và làm hỏng chương trình của bạn.

Trong các ngôn ngữ lập trình như C và C ++, bạn thường phải giải quyết vấn đề này theo cách thủ công. Các ngôn ngữ lập trình khác như Python và Java tự động làm điều đó cho bạn. Điều này được gọi là bộ sưu tập rác tự động, và có một số kỹ thuật để hoàn thành nó.automatic garbage collection, and there are several techniques for accomplishing it.

Cpython sử dụng một kỹ thuật gọi là đếm tham chiếu. Về cơ bản, số lượng tham chiếu của đối tượng Python được tăng lên bất cứ khi nào đối tượng được tham chiếu và nó đã giảm khi đối tượng bị hủy bỏ. Khi số lượng tham chiếu bằng 0, CPython sẽ tự động gọi chức năng phân giải bộ nhớ cho đối tượng đó. Nó có một kỹ thuật đơn giản và hiệu quả, nhưng có một điều bắt được.

Khi số lượng tham chiếu của một cây đối tượng lớn trở thành 0, tất cả các đối tượng liên quan đều được giải phóng. Do đó, bạn có một khoảng dừng dài có khả năng trong đó chương trình của bạn không tiến triển.

Ngoài ra, có một trường hợp sử dụng trong đó đếm tham chiếu chỉ đơn giản là không hoạt động. Xem xét mã sau:

1class A(object): 2 pass 3 4a = A() 5a.some_property = a 6del a

Trong mã trên, bạn xác định lớp mới. Sau đó, bạn tạo một thể hiện của lớp và gán nó là một thuộc tính trên chính nó. Cuối cùng, bạn xóa thể hiện.

Tại thời điểm này, trường hợp không còn có thể truy cập được. Tuy nhiên, việc đếm tham chiếu không xóa phiên bản khỏi bộ nhớ vì nó có một tham chiếu đến chính nó, vì vậy số lượng tham chiếu không bằng không. Vấn đề này được gọi là một chu kỳ tham chiếu và nó có thể được giải quyết bằng cách sử dụng đếm tham chiếu.reference cycle, and it can’t be solved using reference counting.

Đây là nơi Cpython sử dụng một công cụ khác được gọi là Trình thu thập rác tuần hoàn. Nó đi qua tất cả các đối tượng trong bộ nhớ bắt đầu từ các gốc đã biết như đối tượng 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 5. Sau đó, nó xác định tất cả các đối tượng có thể tiếp cận và giải phóng các đối tượng không thể truy cập được vì chúng còn sống nữa. Điều này giải quyết vấn đề chu kỳ tham chiếu. Tuy nhiên, nó có thể tạo ra các tạm dừng đáng chú ý hơn khi có một số lượng lớn các đối tượng trong bộ nhớ.

Pypy, mặt khác, không sử dụng đếm tham chiếu. Thay vào đó, nó chỉ sử dụng kỹ thuật thứ hai, công cụ tìm chu kỳ. Đó là, nó định kỳ đi qua các vật thể sống bắt đầu từ gốc rễ. Điều này mang lại cho PYPY một số lợi thế so với Cpython vì nó không bận tâm đến việc đếm tham chiếu, làm cho tổng thời gian dành cho quản lý bộ nhớ ít hơn trong CPython.

Ngoài ra, thay vì làm mọi thứ trong một công việc chính như Cpython, Pypy chia công việc thành một số lượng khác nhau và chạy mỗi mảnh cho đến khi không còn lại. Cách tiếp cận này chỉ thêm vài mili giây sau mỗi bộ sưu tập nhỏ thay vì thêm hàng trăm mili giây trong một lần như Cpython.

Bộ sưu tập rác rất phức tạp và có nhiều chi tiết hơn vượt ra ngoài phạm vi của hướng dẫn này. Bạn có thể tìm thêm thông tin về bộ sưu tập rác Pypy trong tài liệu.

Hạn chế của pypy

Pypy là một viên đạn bạc và không phải lúc nào cũng là công cụ phù hợp nhất cho nhiệm vụ của bạn. Nó thậm chí có thể làm cho ứng dụng của bạn hoạt động chậm hơn nhiều so với Cpython. Đó là lý do tại sao nó rất quan trọng để bạn ghi nhớ những hạn chế sau đây.

Nó không hoạt động tốt với các phần mở rộng C

Pypy hoạt động tốt nhất với các ứng dụng Python thuần túy. Bất cứ khi nào bạn sử dụng mô -đun mở rộng C, nó sẽ chạy chậm hơn nhiều so với CPYThon. Lý do là Pypy có thể tối ưu hóa các mô -đun mở rộng C vì chúng không được hỗ trợ đầy đủ. Ngoài ra, PYPY phải mô phỏng việc đếm tham chiếu cho phần đó của mã, làm cho nó thậm chí chậm hơn.

Trong những trường hợp như vậy, nhóm PYPY khuyên bạn nên lấy phần mở rộng CPython và thay thế nó bằng phiên bản Python thuần túy để JIT có thể xem nó và thực hiện tối ưu hóa của nó. Nếu đó không phải là một tùy chọn, thì bạn sẽ phải sử dụng Cpython.

Với điều đó đã được nói, nhóm cốt lõi đang làm việc trên các phần mở rộng C. Một số gói đã được chuyển đến Pypy và hoạt động nhanh như vậy.

Nó chỉ hoạt động tốt với các chương trình dài

Hãy tưởng tượng bạn muốn đến một cửa hàng rất gần nhà của bạn. Bạn có thể đi bộ hoặc lái xe.

Chiếc xe của bạn rõ ràng nhanh hơn nhiều so với bàn chân của bạn. Tuy nhiên, hãy nghĩ về những gì nó sẽ yêu cầu bạn làm:

  1. Đi đến nhà để xe của bạn.
  2. Bắt đầu xe của bạn.
  3. Làm ấm chiếc xe lên một chút.
  4. Lái xe đến cửa hàng.
  5. Tìm một chỗ đậu xe.
  6. Lặp lại quá trình trên đường trở về.

Có rất nhiều chi phí liên quan đến việc lái xe, và nó không phải lúc nào cũng xứng đáng nếu nơi bạn muốn đến gần!

Bây giờ hãy nghĩ về những gì sẽ xảy ra nếu bạn muốn đến một thành phố lân cận cách đó năm mươi dặm. Nó chắc chắn sẽ có giá trị để lái xe đến đó thay vì đi bộ.

Mặc dù sự khác biệt về tốc độ không phải là rất đáng chú ý như trong sự tương tự ở trên, nhưng điều tương tự cũng đúng với Pypy và Cpython.

Khi bạn chạy một tập lệnh với Pypy, nó sẽ làm rất nhiều điều để làm cho mã của bạn chạy nhanh hơn. Nếu tập lệnh quá nhỏ, thì chi phí sẽ khiến tập lệnh của bạn chạy chậm hơn so với CPython. Mặt khác, nếu bạn có một kịch bản dài, thì chi phí đó có thể trả cổ tức hiệu suất đáng kể.

Để xem cho chính mình, hãy chạy tập lệnh nhỏ sau trong cả CPython và Pypy:

1import time 2 3start_time = time.time() 4 5for i in range(100): 6 print(i) 7 8end_time = time.time() 9print(f"It took {end_time-start_time:.10f} seconds to compute")

Có một độ trễ nhỏ lúc đầu khi bạn chạy nó với Pypy, trong khi CPython chạy nó ngay lập tức. Với số lượng chính xác, phải mất 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 6 giây để chạy nó trên MacBook Pro 2015 với CPython và 1total = 0 2for i in range(1, 10000): 3 for j in range(1, 10000): 4 total += i + j 5 6print(f"The result is {total}") 7 giây để chạy nó với PYPY.

Nó không làm việc biên dịch trước thời gian

Như bạn đã thấy khi bắt đầu hướng dẫn này, Pypy không phải là một triển khai Python được biên soạn đầy đủ. Nó biên dịch mã Python, nhưng nó không phải là một trình biên dịch cho mã Python. Vì sự năng động vốn có của Python, nó không thể biên dịch Python thành một nhị phân độc lập và sử dụng lại nó.

Pypy là một trình thông dịch thời gian chạy nhanh hơn một ngôn ngữ được giải thích đầy đủ, nhưng nó chậm hơn một ngôn ngữ được biên dịch đầy đủ như C.runtime interpreter that is faster than a fully interpreted language, but it’s slower than a fully compiled language such as C.

Sự kết luận

PYPY là một sự thay thế nhanh chóng và có khả năng cho CPython. Bằng cách chạy tập lệnh của bạn với nó, bạn có thể có được một cải tiến tốc độ lớn mà không cần thực hiện một thay đổi duy nhất cho mã của bạn. Nhưng nó không phải là một viên đạn bạc. Nó có một số hạn chế và bạn sẽ cần kiểm tra chương trình của mình để xem liệu PYPY có thể giúp đỡ hay không.

Trong hướng dẫn này, bạn đã học được:

  • Pypy là gìPyPy is
  • Cách cài đặt pypy và chạy tập lệnh của bạn với nóinstall PyPy and run your script with it
  • Cách pypy so sánh với cpython về tốc độCPython in terms of speed
  • Những tính năng nào Pypy có và cách nó cải thiện tốc độ của các chương trình của bạnfeatures PyPy has and how it improves the speed of your programs
  • Những hạn chế nào mà pypy có thể khiến nó không phù hợp với một số trường hợplimitations PyPy has that may make it unsuitable for some cases

Nếu tập lệnh Python của bạn cần tăng tốc độ, thì hãy thử PyPY. Tùy thuộc vào chương trình của bạn, bạn có thể nhận được một số cải thiện tốc độ đáng chú ý!

Nếu bạn có bất kỳ câu hỏi nào, thì hãy thoải mái tiếp cận trong phần bình luận bên dưới.

Python nào nhanh hơn?

Pypy là một trình thông dịch thời gian chạy nhanh hơn một ngôn ngữ được giải thích đầy đủ, nhưng nó chậm hơn một ngôn ngữ được biên dịch đầy đủ như C., but it's slower than a fully compiled language such as C.

Python 3.10 sẽ nhanh hơn?

Chúng tôi sẽ tìm hiểu trong bài viết này.Quỹ phần mềm Python (PSF) duy trì Python, phát triển ngôn ngữ và luôn làm việc trên những cách mới để cải thiện nó.Trung bình, Python 3.11 nhanh hơn 14% so với Python 3.10.Phiên bản mới chậm hơn một chút trên một số điểm chuẩn, nhưng trên các điểm khác, nó nhanh hơn tới 64%.On average, Python 3.11 is 14% faster than Python 3.10. The new version is marginally slower on some benchmarks, but on the others, it's up to 64% faster.

Python 2 hoặc 3 nhanh hơn là cái nào?

Python 2.7: Xrange thường nhanh hơn và lưu bộ nhớ. : xrange is generally faster & saves memory.

C ++ hay Python nào nhanh hơn?

C ++ nhanh hơn Python vì nó được gõ tĩnh, dẫn đến việc biên dịch mã nhanh hơn.Python chậm hơn C ++, nó hỗ trợ gõ động và nó cũng sử dụng trình thông dịch, điều này làm cho quá trình biên dịch chậm hơn. because it is statically typed, which leads to a faster compilation of code. Python is slower than C++, it supports dynamic typing, and it also uses the interpreter, which makes the process of compilation slower.

Chủ đề