Mengapa python berjalan relatif lambat?

13

Saya telah melakukan benchmark pada Pi pada beberapa kode simulasi saya, relatif terhadap beberapa laptop yang saya miliki. Kode saya cenderung intensif floating point, jadi saya telah menggunakan Raspbian (yang ternyata jauh lebih cepat) karena dukungannya yang mengambang. Saya memiliki kode sederhana yang sama dalam beberapa bahasa berbeda. Jelas kode python lebih lambat daripada kode C platform apa pun yang saya gunakan, tetapi pada Pi tampaknya relatif lebih lambat, dengan faktor sekitar 3. Apakah ada yang tahu mengapa interpreter python cenderung relatif lambat pada Pi, dan Apakah ini sesuatu yang kemungkinan akan diperbaiki?

Inilah tesnya:

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()

Dari posting blog ini tentang percobaan.

Darren Wilkinson
sumber
2
Promosi diri baik-baik saja (masuk akal) tetapi semua tautan blog Anda benar-benar ditambahkan ke pertanyaan adalah kode, jadi saya telah memindahkannya ke sini.
Jivings
2
Um, itu juga berisi detail dan timing dan latar belakang yang berpotensi berguna lainnya yang memperkuat klaim bahwa python lebih lambat relatif terhadap C pada Pi daripada pada mesin linux berbasis Intel, yang merupakan jenis pertanyaan ...
Darren Wilkinson
2
Saya membaca seluruh posting, saya tidak berpikir itu memberikan informasi yang sangat relevan dengan pertanyaan. Dan meminta semua orang untuk membaca halaman informasi sebelum mereka dapat menjawab pertanyaan Anda tidak akan memberi Anda banyak jawaban. Programmer secara definisi, malas. Kami membutuhkan semua informasi dalam potongan yang mudah dicerna :)
Jivings
8
Itu panggilan penilaian yang saya terima, karena saya tipe orang yang santai ... Tapi saya agak khawatir bahwa pengeditan berlebihan yang bersemangat dari hampir setiap pertanyaan yang diposting di situs ini cenderung menghalangi orang dari berpartisipasi. Saya tahu ini dilakukan dengan niat terbaik, tetapi Anda tahu apa yang mereka katakan tentang jalan menuju Neraka ... Saya benar-benar berpikir itu adalah sesuatu yang Anda semua harus tanyakan kepada editor editor aktif untuk berfikir dan berbincang. Akan sangat memalukan jika situs ini tidak lepas landas karena tindakan beberapa individu yang bermaksud baik tetapi salah kaprah.
Darren Wilkinson
1
Pertanyaan bodoh ... apakah Anda menjalankan versi python yang sama di kedua sisi persamaan? Saya berharap pada perangkat keras yang sama, python3 akan menjalankan kode yang sama lebih cepat daripada python2 karena rentang pada python3 adalah sebuah iterator dan pada python2, ia membuat daftar yang kurang efisien (gunakan xrange pada python2) ... lihat misalnya stackoverflow. com / pertanyaan / 94935 / ...
Foon

Jawaban:

7

Saya akan menebak bahwa juru bahasa Python sama sekali tidak dioptimalkan untuk ARM. Python mungkin telah dioptimalkan untuk platform lain. Dalam pengalaman saya, ini berlaku untuk perangkat lunak seperti OpenSSH, jadi saya menganggap itu mirip untuk Python.

Kevin Chen
sumber
2

Python mungkin menderita kekurangan cache cpu. Saya tidak yakin bagaimana Anda bisa mengukurnya dengan mudah

John La Rooy
sumber