Tại sao trăn chạy tương đối chậm?


13

Tôi đã chấm điểm Pi trên một số mã mô phỏng của mình, liên quan đến một vài máy tính xách tay mà tôi có. Mã của tôi có xu hướng nổi nhiều điểm, vì vậy tôi đã sử dụng Raspbian (hóa ra là nhanh hơn nhiều ) do hỗ trợ nổi cứng của nó. Tôi có cùng một mã đơn giản trong một số ngôn ngữ khác nhau. Rõ ràng mã python chậm hơn mã C cho dù tôi sử dụng nền tảng nào, nhưng trên Pi dường như tương đối chậm hơn , với hệ số khoảng 3. Có ai biết tại sao trình thông dịch python có khả năng tương đối chậm trên Pi không, và Đây có phải là một cái gì đó có khả năng được sửa chữa?

Đây là bài kiểm tra:

import random,math

def gibbs(N=50000,thin=1000):
    x=0
    y=0
    print "Iter  x  y"
    for i in range(N):
        for j in range(thin):
            x=random.gammavariate(3,1.0/(y*y+4))
            y=random.gauss(1.0/(x+1),1.0/math.sqrt(2*x+2))
        print i,x,y

gibbs()

Từ bài blog này về thí nghiệm.


2
Tự quảng cáo là tốt (trong lý do) nhưng tất cả các liên kết blog của bạn thực sự được thêm vào câu hỏi là mã, vì vậy tôi đã chuyển nó ở đây để thay thế.
Jivings

2
Ừm, nó cũng chứa các chi tiết và thời gian và nền tảng hữu ích tiềm năng khác chứng minh rằng tuyên bố rằng python chậm hơn so với C trên Pi so với các máy linux dựa trên Intel, đó là loại câu hỏi ...
Darren Wilkinson

2
Tôi đọc toàn bộ bài viết, tôi không nghĩ rằng nó đóng góp thông tin cực kỳ phù hợp với câu hỏi. Và yêu cầu mọi người đọc một trang thông tin trước khi họ có thể trả lời câu hỏi của bạn sẽ không giúp bạn có nhiều câu trả lời. Lập trình viên là theo định nghĩa, lười biếng. Chúng tôi cần tất cả các thông tin trong phần dễ tiêu hóa :)
Jivings

8
Đó là một lời kêu gọi phán xét mà tôi thấy ổn, vì tôi là một chàng trai dễ gần ... Nhưng tôi hơi lo ngại rằng sự chỉnh sửa quá nhiệt tình này của hầu hết mọi câu hỏi được đăng trên trang web này có khả năng ngăn cản mọi người từ tham gia. Tôi biết nó được thực hiện với mục đích tốt nhất, nhưng bạn biết họ nói gì về con đường đến Địa ngục ... Tôi thực sự nghĩ rằng đó là điều mà tất cả các biên tập viên câu hỏi rất tích cực của bạn nên dành thời gian để suy nghĩ và trò chuyện. Sẽ là một sự xấu hổ thực sự nếu trang web này không cất cánh vì hành động của một vài cá nhân có thiện chí nhưng sai lầm.
Darren Wilkinson

1
Câu hỏi ngu ngốc ... bạn có đang chạy cùng một phiên bản của con trăn ở cả hai phía của phương trình không? Tôi mong đợi trên cùng một phần cứng, python3 sẽ chạy cùng mã nhanh hơn python2 vì phạm vi trên python3 là một iterator và trên python2, nó tạo ra danh sách kém hiệu quả hơn (sử dụng xrange trên python2) ... xem ví dụ stackoverflow. com / câu hỏi / 94935 / Ngày
Foon

Câu trả lời:


7

Tôi đoán rằng trình thông dịch Python đơn giản là không được tối ưu hóa cho ARM. Python có thể đã được tối ưu hóa cho các nền tảng khác. Theo kinh nghiệm của tôi, điều này đúng với phần mềm như OpenSSH, vì vậy tôi cho rằng nó tương tự với Python.


2

Python có lẽ bị thiếu bộ nhớ cache cpu. Tôi không chắc làm thế nào bạn có thể đo lường dễ dàng mặc dù

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.