Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

informatik01

15.8k10 Huy hiệu vàng74 Huy hiệu bạc103 Huy hiệu Đồng10 gold badges74 silver badges103 bronze badges

Đã hỏi ngày 23 tháng 3 năm 2009 lúc 10:26Mar 23, 2009 at 10:26

16

Đừng kết hợp ngôn ngữ và thời gian chạy.

Python (ngôn ngữ) có nhiều triển khai thời gian chạy.

  • Cpython thường được giải thích và sẽ chậm hơn so với mã gốc C#. Nó có thể chậm hơn Java, tùy thuộc vào trình biên dịch Java JIT.

  • Jython được giải thích trong JVM và có cấu hình hiệu suất giống như Java.

  • IronPython dựa vào các thư viện .NET và IL là C#, vì vậy sự khác biệt về hiệu suất sẽ tương đối nhỏ.

  • Python có thể được dịch sang mã gốc thông qua pyrex, pytoc và các loại khác. Trong trường hợp này, nó thường sẽ thực hiện cũng như C ++. Bạn có thể - ở một mức độ nào đó - tối ưu hóa hơn nữa C ++ và có thể tạo ra hiệu suất tốt hơn một chút so với đầu ra không được tối ưu hóa từ Pyrex.

    Để biết thêm thông tin, xem http://arcley.blogspot.com/2009/03/so-long-pyrex.html

Lưu ý rằng Python (ngôn ngữ) không chậm. Một số thời gian chạy Python (ví dụ CPython) sẽ chậm hơn so với mã tự nhiên C ++.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 11:25Mar 23, 2009 at 11:25

S.LottS.LottS.Lott

378K79 Huy hiệu vàng503 Huy hiệu bạc773 Huy hiệu Đồng79 gold badges503 silver badges773 bronze badges

17

Không thực sự chính xác khi hỏi tại sao Python chậm hơn Java/C#. Java nhanh như thế nào? Vâng, các phiên dịch viên ngây thơ chậm hơn khoảng mười lần so với các trình biên dịch được tối ưu hóa. Tôi tin rằng có một thông dịch viên bytcode Java được viết bằng JavaScript - có lẽ không nhanh lắm. Vì vậy, câu hỏi dự định dường như là "tại sao hệ thống ngôn ngữ Cpython chậm hơn so với mặt trời tương đương, IBM và Oracle JRE và Microsoft .NET Runtime?"

Tôi tin rằng câu trả lời chính xác là phi kỹ thuật. Thời gian chạy Java và .NET nhanh nhất nhanh hơn vì họ có các nhóm kỹ thuật toàn thời gian lớn phát triển chúng trong môi trường cạnh tranh hiệu suất.

Hệ thống ngôn ngữ động rất dễ thực hiện. Bất kỳ thằng ngốc nào cũng có thể làm được. Tôi có. Các hệ thống ngôn ngữ tĩnh phức tạp hơn để thiết kế và thực hiện. Một hệ thống tĩnh đơn giản sẽ có xu hướng chạy nhanh hơn nhiều so với tương đương động công việc tương đương. Tuy nhiên, có thể các hệ thống động được tối ưu hóa cao để chạy gần như nhanh. Tôi hiểu một số triển khai nhỏ là khá tốt. Một ví dụ thường được trích dẫn của một hệ thống động được phát triển là máy MIT LISP.

Ngoài ra, nếu tiếng càu nhàu thực sự được thực hiện bằng mã thư viện, thì hệ thống ngôn ngữ có thể không quan trọng. Ngoài ra, ngôn ngữ có thể khuyến khích (hoặc cho thời gian (!)) Để phát triển các thuật toán hiệu quả hơn có thể dễ dàng xóa sạch sự khác biệt về hiệu suất nhân tố không đổi.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 11:30Mar 23, 2009 at 11:30

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

1

Như đã đề cập trong các câu trả lời khác, điều này phụ thuộc vào hệ thống thời gian chạy cũng như nhiệm vụ trong tay. Vì vậy, Python tiêu chuẩn (C) không nhất thiết phải chậm hơn Java hoặc C#. Một số mô -đun của nó được thực hiện trong C. do đó kết hợp tốc độ của việc triển khai bản địa với ngôn ngữ của Python.

Chúng tôi đã thực hiện một thử nghiệm nhỏ: Chúng tôi đã so sánh thời gian thực hiện của tính toán giai thừa bằng các ngôn ngữ khác nhau. Bài kiểm tra thực sự nhằm đánh giá hiệu suất của việc triển khai số nguyên chính xác tùy ý.

testee. language arbitrary-precision integers run-time

     1. Java     java.math.BigInteger         JRE 6.13
     2. .NET     System.Numerics.BigInteger   MS CLR 4.0
     3. Python   long                         Active Python 2.6.2.2
     4. Squeak   BigInt                       Squeak 3.10.2
     5. .NET     Mono.Math.BigInteger         MS CLR 4.0

results:

                 1)         2)       3)       4)        5)
   10.000!      343 ms    137 ms    91 ms  1.200 ms    169 ms
   20.000!    1.480 ms    569 ms   372 ms  1.457 ms    701 ms
   30.000!    3.424 ms  1.243 ms   836 ms  3.360 ms  1.675 ms
   40.000!    6.340 ms  2.101 ms 1.975 ms  6.738 ms  3.042 ms
   50.000!   10.493 ms  3.763 ms 3.658 ms 10.019 ms  5.242 ms
   60.000!   15.586 ms  7.683 ms 5.788 ms 14.241 ms 10.000 ms

Văn bản alt http://www.mycsharp.de/wbb2/attachment.php?attachmentid=6909&sid=0d5aaa62b522d005d9e7089785b5d19f1

Biểu đồ thanh hiển thị kết quả. Python là người chiến thắng rõ ràng. Theo như tôi biết Python sử dụng karatsuba-algorithm để nhân số các số nguyên lớn, điều này giải thích tốc độ.

Bên cạnh đó, "số nguyên chính xác tùy ý" của Python là long tích hợp. Do đó, bạn thậm chí không cần xử lý loại đặc biệt cần thiết cho lớp Biginteger của Java.

Đã trả lời ngày 24 tháng 7 năm 2009 lúc 13:13Jul 24, 2009 at 13:13

Wierobwierobwierob

4.2291 Huy hiệu vàng25 Huy hiệu bạc27 Huy hiệu đồng1 gold badge25 silver badges27 bronze badges

7

Đơn giản - Python chậm.Python is slow.

Bất kể người phiên dịch nào (hiện có sẵn), nó chậm hơn Java và C. trong các điểm chuẩn khác nhau, nó chậm hơn Ruby và PHP. Không phụ thuộc vào câu trả lời của người khác, kiểm tra và tự xác minh chính mình.

http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=python3&lang2=java&data=u64q

Cá nhân tôi không nghĩ rằng, có rất nhiều đóng góp và phát triển nghiêm trọng được thực hiện khi nhận được Python nhanh hơn. Vì năng suất là tốt trong Python và nó giải quyết một số vấn đề thẳng về phía trước, tốc độ/hiệu suất không được thực hiện nghiêm túc. Có một số vấn đề kiến ​​trúc quá ngăn chặn Python nhận được các tinh chỉnh hiệu suất.

Tuyên bố miễn trừ trách nhiệm - Câu trả lời này có lẽ sẽ làm tổn thương những người yêu thích Python. Tôi cũng là nhà phát triển Python, thích phát triển các ứng dụng web trong Django/Flask/Kim tự tháp chứ không phải Spring (Java). Nhưng tôi thấy thực tế trong công việc và kinh nghiệm của mình, Python chậm hơn như thế nào. Tốc độ không phải lúc nào cũng là ưu tiên của tôi. Nhưng tôi đứng với họ, người nói rằng thông dịch viên Python nên được bôi dầu và bôi trơn hoặc thay đổi toàn bộ động cơ để ít nhất là đứng trong cuộc đua marathon. Đó là một ngôn ngữ lập trình chính thống. - This answer probably will hurt Python lovers. I too am Python developer, loves developing webapps in Django/Flask/Pyramid rather than Spring (Java). But I see practically in my work and experience, how Python is slower. The speed is not always my priority. But I do stand with them, who says Python Interpreter should get oiling and greasing or total engine change to at least stand in marathon. It's a mainstream programming language.

Đã trả lời ngày 22 tháng 7 năm 2013 lúc 15:08Jul 22, 2013 at 15:08

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

Ravi Kumarravi KumarRavi Kumar

1.36216 huy hiệu bạc21 Huy hiệu đồng16 silver badges21 bronze badges

3

Theo đề xuất trong các bình luận, bạn thực sự nên cung cấp một trường hợp kiểm tra để lý do về. Lý do đằng sau sự khác biệt về hiệu suất sẽ thay đổi tùy thuộc vào thử nghiệm được thực hiện.

Tuy nhiên, tôi đề nghị rằng bản chất động và tính năng động có thể có liên quan nhiều đến nó. Đối với các cuộc gọi không phải là Virtual, C#/Java được JIT biên dịch là cực kỳ rẻ vì nó có thể được xác định chính xác tại JIT-Time. Ngay cả các cuộc gọi ảo cũng chỉ liên quan đến một cấp độ chuyển hướng duy nhất. Khi ràng buộc trở nên năng động, có rất nhiều thứ cần xem xét.

Tôi không biết đủ chi tiết về Python để tuyên bố hiểu hành vi thời gian chạy chính xác của nó, điều mà tôi nghi ngờ cũng có thể thay đổi theo phiên bản và triển khai. Có một thứ như "mã byte python" sau đó được thực hiện bởi một máy ảo - cho dù máy ảo này thực sự thực hiện việc tổng hợp JIT hay không là một vấn đề khác.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 10:30Mar 23, 2009 at 10:30

Jon Skeetjon SkeetJon Skeet

1.4M841 Huy hiệu vàng9007 Huy hiệu bạc9113 Huy hiệu Đồng841 gold badges9007 silver badges9113 bronze badges

2

Nó tập trung vào thực tế là giai đoạn biên dịch có ít thông tin hơn để làm việc và do đó thời gian chạy cần phải làm nhiều công việc hơn trong trường hợp các ngôn ngữ được đánh máy (được đánh máy động).

Do đó, nếu tôi thực hiện gọi phương thức foo.bar (), trong trường hợp Java hoặc C ++, việc gọi vào thanh có thể được tối ưu hóa trong quá trình biên dịch bằng cách khám phá loại "foo" và sau đó gọi trực tiếp phương thức tại vị trí bộ nhớ nơi vị trí bộ nhớ nơi nơi Các trình biên dịch biết nó sẽ được tìm thấy. Vì một python hoặc bất kỳ trình biên dịch ngôn ngữ được gõ tự động nào khác không biết loại foo đối tượng thuộc loại nào, nên nó phải thực hiện kiểm tra loại trong thời gian chạy và sau đó tra cứu địa chỉ của phương thức thanh và sau đó gọi nó.

Có những khó khăn khác mà một nhà văn biên dịch Python cũng phải vật lộn với, mặc dù cái ở trên hy vọng đầy đủ đưa ra một dấu hiệu. Vì vậy, ngay cả với các nhà văn trình biên dịch tốt nhất, các ngôn ngữ được đánh máy tĩnh có thể hoạt động tốt hơn nhiều trong thời gian chạy.

Trong đó điểm số ngôn ngữ được gõ động thường là trong thời gian phát triển. Do ít dòng mã hơn để viết và duy trì, và không có thời gian chờ đợi cho các nhà phát triển, sự phát triển thường trải qua nhanh hơn nhiều.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 12:19Mar 23, 2009 at 12:19

1

Những gì bạn có ở đó là ví dụ rõ ràng về việc viết java bằng Python:

 def __init__(self,size):  
     self.first = None  
     last = None  
     for i in range(size):  
         current = Person(i)  
         if self.first == None : self.first = current  
         if last != None :  
             last.next = current  
             current.prev = last  
         last = current  
     self.first.prev = last  
     last.next = self.first  

Một chút pythonic:

 def __init__(self,size):  
     chain = [Person(i) for i in range(size)]
     self.first = chain[0]
     chain = zip(chain, chain[1:].append(chain[0]))
     for p,n in chain:
        p.next = n
        n.prev = p

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 11:47Mar 23, 2009 at 11:47

Vartecvartecvartec

128K36 Huy hiệu vàng213 Huy hiệu bạc242 Huy hiệu Đồng36 gold badges213 silver badges242 bronze badges

3

Tôi nghĩ rằng cuối cùng, Python không đi xa nhất có thể với các tối ưu hóa. Hầu hết các kỹ thuật tối ưu hóa phổ biến là cho các ngôn ngữ tĩnh. Có các kỹ thuật tối ưu hóa cho các ngôn ngữ năng động, nhưng các ngôn ngữ hiện đại dường như không sử dụng nhiều nhất có thể. Steve Yegge có một bài đăng trên blog tuyệt vời về chủ đề này.

EDIT: Tôi chỉ muốn chỉ ra rằng tôi không nhất thiết phải tuyên bố điều này là chỉ trích Python. Tôi thích sự đơn giản hơn tốc độ không cần thiết bất cứ ngày nào.: I just wanted to point out that I'm not necessarily stating this to be critical of Python. I prefer simplicity over unnecessary speed any day.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 13:53Mar 23, 2009 at 13:53

Jason Bakerjason BakerJason Baker

187K132 Huy hiệu vàng370 Huy hiệu bạc510 Huy hiệu Đồng132 gold badges370 silver badges510 bronze badges

Nó không liên quan gì đến chính các ngôn ngữ, đó chỉ là thực tế là hệ thống thời gian chạy và thời gian chạy Java (JVM) có chất lượng rất cao và rất nhiều tài nguyên đã được đầu tư vào sự ổn định, khả năng mở rộng và cải thiện hiệu suất trong nhiều năm.implementation and runtime system (JVM) are very high quality, and that lots of resources have been invested in stability, scalability and performance improvements over the years.

Trái ngược với thực tế là việc triển khai CPYThon vừa được triển khai gần đây, EG đã phân phối trong phiên dịch viên của nó, điều này đã giúp tăng hiệu suất lên tới 20% cho một số vấn đề nhất định. Đó không phải là một điều tốt vì nó nghe, nó là xấu bởi vì loại tối ưu hóa cơ bản đó sẽ ở đó từ ngày đầu tiên.

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

giận dữ

1.9252 huy hiệu vàng28 Huy hiệu bạc49 Huy hiệu đồng2 gold badges28 silver badges49 bronze badges

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 13:30Mar 23, 2009 at 13:30

MarkomarkoMarko

29.6K17 Huy hiệu vàng74 Huy hiệu bạc108 Huy hiệu đồng17 gold badges74 silver badges108 bronze badges

Tôi nghĩ ngược lại. Tôi có thể thực hiện chương trình đơn giản trong Python nhanh hơn ở Java và những kịch bản Python đó hoạt động rất nhanh.

Tất nhiên câu hỏi của bạn mà không có ví dụ là khó trả lời. Có thể bạn đã tìm thấy thư viện chậm, lỗi, vv cung cấp cho chúng tôi thêm chi tiết.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 10:33Mar 23, 2009 at 10:33

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

Michał Niklasmichał NiklasMichał Niklas

52K17 Huy hiệu vàng66 Huy hiệu bạc109 Huy hiệu đồng17 gold badges66 silver badges109 bronze badges

Vì nó được giải thích và không được biên dịch .. nên nó sẽ chậm hơn trong thời gian thực hiện.

Như một bảng được đề cập trong cuốn sách hoàn thành mã (phiên bản thứ hai), trang 600,

C# bằng C ++ trong thời gian thực hiện (1: 1). Và Python chậm hơn hàng trăm lần so với C ++ trong thời gian thực hiện (> 100: 1).

Và Java chậm hơn C ++ một lần rưỡi (1,5: 1).

Những thống kê này là trung bình. Tôi không biết ai đã thực hiện nghiên cứu này, nhưng có vẻ thú vị.

Đã trả lời ngày 26 tháng 4 năm 2009 lúc 16:55Apr 26, 2009 at 16:55

Hướng dẫn does python run slower than java? - python có chạy chậm hơn java không?

Saleh al-Zaidsaleh al-ZaidSaleh Al-Zaid

1.2891 Huy hiệu vàng12 Huy hiệu bạc12 Huy hiệu đồng1 gold badge12 silver badges12 bronze badges

Loại câu hỏi này không thể được trả lời chỉ bằng cách lý luận định tính, bạn cần điểm chuẩn tốt để sao lưu nó. Dưới đây là một bộ so sánh Python 3 vs C# mono và thấy Python chậm hơn 3 đến 300 lần. Kết quả Python so với Java là tương tự nhau. (Các cảnh báo thông thường về việc diễn giải các điểm chuẩn được áp dụng.)

Các điểm chuẩn này cũng báo cáo kích thước mã nguồn và Python ngắn gọn hơn đáng kể so với Java và C#.

Đã trả lời ngày 22 tháng 7 năm 2009 lúc 12:58Jul 22, 2009 at 12:58

Jim Ferransjim FerransJim Ferrans

30.2K12 Huy hiệu vàng55 Huy hiệu bạc83 Huy hiệu đồng12 gold badges55 silver badges83 bronze badges

1

Tôi sẽ lập luận rằng sự dễ dàng và đơn giản của việc viết mã Python giúp bạn có thể viết mã phức tạp hơn; Ví dụ, mã tận dụng các bộ xử lý đa lõi. Vì hiệu suất mỗi lõi đã bị trì trệ trong 5-10 năm qua, tôi không nghĩ rõ ràng rằng các chương trình Python (cho dù họ đang chạy trên CPython hay thứ gì khác) trong thời gian dài.

Đã trả lời ngày 23 tháng 3 năm 2009 lúc 13:04Mar 23, 2009 at 13:04

DNSDNSDNS

36.4K18 Huy hiệu vàng90 Huy hiệu bạc127 Huy hiệu đồng18 gold badges90 silver badges127 bronze badges

4

Python nhanh hơn hay chậm hơn Java?

Python và Java là hai trong số những ngôn ngữ lập trình phổ biến và mạnh mẽ nhất. Java thường nhanh hơn và hiệu quả hơn Python vì nó là ngôn ngữ được biên dịch. Là một ngôn ngữ được giải thích, Python có cú pháp đơn giản hơn, ngắn gọn hơn Java. Nó có thể thực hiện chức năng tương tự như Java trong ít dòng mã hơn.Java is generally faster and more efficient than Python because it is a compiled language. As an interpreted language, Python has simpler, more concise syntax than Java. It can perform the same function as Java in fewer lines of code.

Java có nhanh hơn Python không?

Java và Python là hai trong số các ngôn ngữ lập trình phổ biến nhất. Trong hai, Java là ngôn ngữ nhanh hơn, nhưng Python đơn giản và dễ học hơn. Mỗi người đều được thiết lập tốt, độc lập với nền tảng và một phần của một cộng đồng lớn, hỗ trợ.Java is the faster language, but Python is simpler and easier to learn. Each is well-established, platform-independent, and part of a large, supportive community.

Tại sao Python chậm hơn C ++ và Java?

Một thông dịch viên mất rất ít thời gian để phân tích mã nguồn.Tuy nhiên, thời gian tổng thể để thực hiện quá trình chậm hơn nhiều.Điều này làm cho việc thực hiện ngôn ngữ lập trình được giải thích rất chậm so với các ngôn ngữ được biên dịch như C hoặc C ++.Đó là lý do tại sao Python chậm hơn C ++ và Java.the overall time to execute the process is much slower. This makes the execution of the Interpreted programming language very slow as compared to compiled languages like C or C++. That's why Python is slower than C++ and Java.

Tại sao Python chậm hơn Java hoặc C#?

Không giống như các ngôn ngữ lập trình phổ biến khác bao gồm C# hoặc Java, Python được gõ động và ngôn ngữ được giải thích.Nó chậm chủ yếu do tính chất năng động và tính linh hoạt của nó.primarily due to its dynamic nature and versatility.