SORU
5 Mayıs 2009, Salı


Ruby Tail Call Optimizasyonu yapmak mı?

Fonksiyonel diller özyineleme kullanmak için bir sürü sorunu çözmek için bir yol, ve bu nedenle çoğu Tail Call Optimizasyonu azaltılmasına gerçekleştirin. Toplam maliyeti düşürücü nedenler aramaları için bir işlevinden başka bir işlev (ya da kendisi bu durumda, bu özellik olarak da bilinir Kuyruk Özyineleme Eleme olan bir alt MODELDİR), son adım bu fonksiyon için bir yığın çerçeve, azalır yükü ve bellek kullanımı.

Ruby belli ki "" fonksiyonel dillerden kavramlar (Lambda fonksiyonları göster gibi ve benzeri, vb.), bir dizi ödünç vardır beni merak yapar: Ruby tail call optimizasyonu yapmak Mı?

CEVAP
5 Mayıs 2009, Salı


Hayır, Yakut MALİYETİNİ yapmaz. Ancak, o da yokdeğiltoplam sahip olma MALİYETİNİ gerçekleştirin.

Ruby Dili Belirtimi MODELDİR hakkında bir şey söylemiyor. Bunu yapmak zorundasın demiyor, ama o da söylemiyorolamazyap. Sadece, olmazgüveniyorbunun üzerine.

Bu Dili Şartname nerede Düzeni farklıgerektirirbutümUygulamalarıgerekirtoplam sahip olma MALİYETİNİ gerçekleştirin. Ama Guido van Rossum Python Uygulamaları birden çok kez (son kez bir kaç gün önce sadece) açıkça ifade etti burada da Python aksineolmamalıdırtoplam sahip olma MALİYETİNİ gerçekleştirin.

Matsumoto MODELDİR sempatik Yukihiro, o sadece güç istemiyortümBunu destekleyecek uygulamaları. Ne yazık ki, bu olamaz MODELDİR güveniyor, ya da eğer bunu yaparsanız, bu kod artık diğer Ruby Uygulamaları için taşınabilir olacağı anlamına gelir.

Bu yüzden, bazı Ruby Uygulamaları MODELDİR gerçekleştirmek, ama çoğu yok. YARV, örneğin destekler MODELDİR, ancak (şimdilik) açık olarak Yorumsuz bir hat kaynak kodu ve yeniden VM, etkinleştirmek için MODELDİR – gelecek sürümleri olacak varsayılan olarak, sonra uygulamaya kararlı olduğunu kanıtlıyor. Papağan Sanal Makine MALİYETİNİ doğal olarak, bu nedenle Kardinal kolayca destek olabilir oldukça da destekler. CLR IronRuby ve Ruby.NET muhtemelen bunu yapabilir anlamına gelir MODELDİR, biraz da olsa destek var. Rubinius muhtemelen de bunu yapabilir.

Ama JRuby ve XRuby MODELDİR desteği yok, ve onlar muhtemelen JVM MODELDİR kendisi için destek kazanır sürece, kazandı. Sorun şu: eğer istediğiniz bir hızlı uygulama, hızlı ve sorunsuz entegrasyon ile Java, olmalısın yığını uyumlu Java ve kullanım JVM yığın mümkün olduğunca. Sen-ebilmek kolayca uygulamak MODELDİR ile trambolin apaçık devamı-geçen tarzı, ama o zaman artık kullanarak JVM yığın, başka bir deyişle, her şey istediğiniz çağırmak için Java ya da ara Java içine Ruby, senin gerçekleştirmek için bir çeşit dönüşüm, yavaş. Yani, XRuby ve JRuby MODELDİR ve devamı için temelde aynı sorun var) aşırı hız ve Java entegrasyonu ile gitmek için seçti.

Bu sıkıca MODELDİR doğal olarak desteklemediği bazı ana platformu ile entegre etmek istiyorum Ruby tüm uygulamaları için geçerlidir. Örneğin, MacRuby aynı sorun olacak sanırım.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • Visual Life

    Visual Life

    3 Temmuz 2006