Python neden nispeten yavaş çalışıyor?


13

Pi'yi sahip olduğum birkaç dizüstü bilgisayara göre simülasyon kodlarımın bazılarında karşılaştırıyorum. Kodlarım kayan nokta yoğun olma eğilimindedir, bu yüzden sert şamandıra desteği nedeniyle Raspbian ( daha hızlı olduğu ortaya çıkıyor) kullanıyorum . Birkaç farklı dilde aynı basit kod var. Açıkçası python kodu kullandığım platform ne olursa olsun C kodundan daha yavaştır, ancak Pi'de yaklaşık 3'lük bir faktörle nispeten daha yavaş gibi görünmektedir. bu düzeltilmesi muhtemel bir şey mi?

İşte test:

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

Gönderen bu blog yayınında denemeyle ilgili.


2
Kendi kendine tanıtım gayet iyi (akıl içinde) ama soruna gerçekten eklenen tüm blog bağlantınız koddu, bu yüzden onun yerine buraya taşındım.
Jivings

2
Ayrıca, python'un Pi üzerindeki C'ye göre, sorunun temelini oluşturan Intel tabanlı linux makinelere göre daha yavaş olduğu iddiasını doğrulayan ayrıntıları ve zamanlamaları ve diğer potansiyel olarak faydalı arka planı içeriyordu ...
Darren Wilkinson

2
Tüm yazıyı okudum, bunun soru ile inanılmaz derecede ilgili bilgilere katkıda bulunduğunu düşünmüyorum. Ve herkesten, sorunuza cevap vermeden önce bir bilgi sayfasını okumasını istemek size çok fazla cevap vermeyecektir. Programcılar tanım gereği tembeldir. Sindirimi kolay parçalar hakkında tüm bilgilere ihtiyacımız var :)
Jivings

8
Bu benim iyi olduğum bir yargılama çağrısı, ben kolay giden bir adam olduğum için ... Ama bu sitede yayınlanan hemen hemen her sorunun bu gayretli aşırı düzenlemesinin insanları caydırma ihtimalinden biraz endişeliyim katılmaktan. Bunun en iyi niyetle yapıldığını biliyorum, ama Cehenneme giden yol hakkında ne söylediklerini biliyorsun ... Gerçekten çok aktif soru editörlerinin düşünmesi ve sohbet etmesi için biraz zaman alması gerektiğini düşünüyorum. Birkaç iyi niyetli ama yanlış yönlendirilmiş bireyin eylemleri nedeniyle bu sitenin kalkmaması gerçek bir utanç olacaktır.
Darren Wilkinson

1
Aptalca soru ... denklemin her iki tarafında da aynı python sürümünü mü çalıştırıyordunuz? Aynı donanımda beklediğimden, python3 aynı kodu python2'den daha hızlı çalıştıracaktır çünkü python3'daki aralık bir yineleyici ve python2'de, daha az verimli (python2 üzerinde xrange kullanın) liste oluşturur ... örneğin stackoverflow. com / sorular / 94935 /…
Foon

Yanıtlar:


7

Python yorumlayıcısının ARM için optimize edilmediğini tahmin ediyorum. Python diğer platformlar için optimize edilmiş olabilir. Deneyimlerime göre, bu OpenSSH gibi yazılımlar için geçerlidir, bu yüzden Python için benzer olduğunu varsayıyorum.


2

Python muhtemelen cpu önbelleği eksikliğinden muzdariptir. Bunu nasıl kolayca ölçebileceğinden emin değilim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.