SORU
22 Aralık 2008, PAZARTESİ


Python Performans - Hiç başka bir şeyi yeniden yapmak zorunda kaldın mı?

Kimse Python kod vardı, bunu gerçekleştirmek için çıktı yeterince hızlı oldu mu?

İçin zorunlu yanibaşka bir dil seçinçünkü?

Biz araştıran kullanarak Python için bir çift daha büyük projeler, ve bence bu çoğu durumda, Python çok hızlı yeterli için en senaryoları (göre söyle, Java) çünkü buna dayanmaktadır optimize edilmiş C rutinleri.

Python ile işe başlamış, nerede ise insan örnekleri var mı görmek istedimamabaşka performans yüzünden bir şey ile gitmek zorunda sona erdi.

Teşekkürler.

CEVAP
22 Aralık 2008, PAZARTESİ


Evet, var. (Uzunluk öneki ayrılmış yerine) ikili bcp çıktı dosyası için satır sayısı bir program yazmıştım ve python bir çok yavaştı, çünkü C bunu yeniden yapmak zorunda sona erdi. Bu program oldukça küçük (sadece birkaç gün için yeniden yazma C) istemedim, bu yüzden rahatsız etmek denemek ve oluşturmak bir melez uygulaması (python tutkal ile merkez rutinleri yazılı C) ama bu da bir uygun rota.

Performans kritik bit ile daha geniş bir uygulama C ve daha yüksek seviye bir dil kombinasyonu olarak yazılabilir. Performans-kritik bir arayüz ile C sistemin geri kalanı için Python parçaları yazabilirsiniz. *, Pyrex *0 veya Boost.Python C kullanıyorsanız () Python arabirimi için tesisat yapmak için iyi bir mekanizma sağlar. C API for python Tcl Lua için bundan daha karmaşık ama olanaksız elle inşa etmek için değil. El yapımı C Python/API bir örneği için cx_Oracle check out.

Bu yaklaşım başarılı uygulamalar kadar 1970'lere kadar geri gidiyor farkındayım) çok sayıda kullanılmıştır. Mozilla olduğunu açıkça yazılı Javascript etrafında bir çekirdek motoru, C ile yazılmış Several CAD packages, Interleaf (bir teknik belge yayınlama sistemi) ve elbette EMACS ölçüde yazılmış LİSP Merkezi a, C, assembly dili veya başka bir çekirdek. Ticari ve açık kaynak kodlu pek çok başvuru (örneğin Chandler Sungard Front Arena) gömülü Python desteği kullanın ve Python uygulamasının önemli kısımlarını uygulamak.

DÜZENLEME:Dutch Masters rsponse' yorum, C ile birini tutmak veya C Python proje için takımda programlama becerileri ve hız için uygulamanın bazı yazma seçeneği sunar. Eğer bir uygulama büyük bir veri yapısı veya büyük veri hacmi üzerinde çok yinelemeli burada önemli bir performans kazancı elde etmek için bekleyebilirsiniz bölgeler. Bu durumda satır sayacı yukarıda vardı için önlemler bir dizi dosyalar toplam birkaç gigabayt ve gidip bir süreç boyunca nerede okumak bir değişen uzunluğu önek ve kullanılan belirlemek için uzunluğu veri alanı. Bu alanların en kısa (sadece birkaç bayt uzunluğunda). Bu biraz-twiddly ve C. için doğal bir uyum sağladı çok düşük seviye ve yinelemeli oldu

numpy, cElementTree cStringIO gibi python kitaplıkları çok toplama veri ile çalışmayı kolaylaştıran bir python API ile optimize edilmiş C bir çekirdek kullanın. Örneğin, numpy tüm zor işleri ve toplama düzeyinde hizmet veren bir Python API olan matris veri yapıları ve işlemleri C ile yazılmış.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • Amena

    Amena

    15 Kasım 2006
  • Drakinen

    Drakinen

    1 EYLÜL 2008