SORU
21 HAZİRAN 2011, Salı


Nasıl DZD mümkün olduğunca verimli veri yapıları yazıyorsun?

Bazen çok ihtiyacım var yazmak için bir veri yapısı bulamıyorum üzerinde Hackage, ya da ne buldum değil test veya kalite için yeterince bana güven, ya da sadece bir şey istemiyorum bir bağımlılık. Şu anda Okasaki kitabı okuyorum, ve asimptotik hızlı veri yapıları tasarımı nasıl anlatma konusunda oldukça iyidir.

Ancak, özellikle DZD ile çalışıyorum. Sabit faktörler benim için büyük bir anlaşma vardır. Bellek kullanımı da benim için büyük bir olay. Sorular özellikle DZD hakkında.

Özellikle

  • Nasıl düğümleri paylaşımı en üst düzeye çıkarmak için
  • Nasıl bellek ayak izi azaltmak için
  • Yanlış katılık nedeniyle uzay sızıntıları önlemek için nasıl/tembellik
  • Nasıl kod önemli bölümleri için sıkı iç döngüler üretmek için DZD almak için

Web üzerinde çeşitli yerlerde çok aradım, ve bir varbelirsiznasıl çalışmak için fikir, örneğin, maça çıkış, UNPACK parametreleri kullanarak, ve gibi bakıyor DZD. Ama bunu anladığımdan emin değilim.

Açık favori veri yapıları kütüphanemi, konteynerler, ben bozdum ve Veri baktı.Sıra modül. Seq hızlı yapmak için ne yaptıklarını çok anladığımı söyleyemem.

Gözüme çarpan ilk şey FingerTree a tanımıdır. Sadece parmak ağaçları ile yabancı olsa olmam sanırım. Gözüme çarpan ikinci şey SPECIALIZE tüm parametreleri. Burada neler olduğu hakkında hiçbir fikrim yok, ve bu kodu her tarafa saçılmış çok merak ediyorum.

Birçok fonksiyonu da INLINE pragma sahip. Bunun ne anlama geldiğini tahmin edebiliyorum, ama nasıl bir yargı INLINE fonksiyonlar için çağrı yapabilirim?

Şeyler hattı ile ilgili çok ilginç ~475, bir bölüm olarak headered olsun''. Uygulamalı İnşaat Onlar tanımlamak bir newtype sarıcı temsil Kimliği monad, yazdıkları kendi kopyasını sıkı devlet monad, ve onlar bir tanımlı işlev adı applicativeTree olan, görünüşe göre özel Kimlik monad ve bu artışlar paylaşım çıkış fonksiyonu. Burada neler olduğu hakkında hiçbir fikrim yok. Nasıl bir büyüdür paylaşımı artırmak için kullanılıyor?

Neyse, fazla Veri öğrenecek çok şey var emin değilim.Sıra. Orada diğer 'model programları' bilgelik kazanmak için okuyabilirim? Gerçekten ben gerçekten onları daha hızlı gitmek için gereken zaman benim veri yapıları çorbası nasıl bilmek istiyorum. Özellikle bir şey kolay füzyon yapmak, ve iyi füzyon kuralları yazma hakkında gitmek nasıl veri yapıları yazıyor.

CEVAP
21 HAZİRAN 2011, Salı


Bu büyük bir konu! Çoğu kitap bir bölüm burada yazmaya çalışmayacağım bu yüzden başka bir yerde izah edilmiştir. Bunun yerine:

  • Real World Haskell, ch 25, "Performance" - anlatılır, basit ve uzmanlık açma, profil oluşturma, Temel okuma ve bazı iyileştirmeler.

Johan Tibell bu konu hakkında bir sürü yazı

Ve bazı şeyler işte

Ve diğer bazı şeyler:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006
  • USI Events

    USI Events

    6 AĞUSTOS 2013