“CPS” yaklaşımı SML / NJ'deki performansa büyük zarar verdi; muhakeme isteniyor


11

F # Öğrenme ile ilgili bir yorumda : Diğer programlama dillerini kullanan hangi kitaplar fonksiyonel kavramları öğrenmek için F # 'a çevrilebilir? Makarius şunları söyledi:

"CPS" yaklaşımının SML / NJ'deki performansa büyük zarar verdiğini unutmayın. Fiziksel değerlendirme modeli, donanıma dahil edilmiş çok fazla varsayımı ihlal eder. Isabelle / HOL gibi SML'nin büyük sembolik uygulamalarını alırsanız, CPS'li SML / NJ yaklaşık olarak çıkar. Geleneksel yığını ile Poly / ML'den 100 kat daha yavaştır.

Birisi bunun nedenlerini açıklayabilir mi? (Tercihen bazı örneklerle) Burada bir empedans uyuşmazlığı var mı?


1
Anladığım kadarıyla, donanım bir yığın disiplini kabul ediyor ve bu nedenle CPS yaklaşımı, bu varsayımlara bağlı kalmamak için bir performans isabeti alıyor. Ama bu sadece bilgisiz düşüncem.
Andrej Bauer

Yanıtlar:


9

İlk yaklaşımda, bir program geleneksel yığın oluşturma ve küçülme yerine, CPS stilinde öbek üzerinde ilerlediğinde, bellek erişiminin "yöresinde" bir fark vardır. Ayrıca, CPS'nin yığın üzerine yerleştirilen görünüşte yerel verilerinizi kurtarmak için her zaman GC'ye ihtiyacı olacağını unutmayın. Sadece bu gözlemler, donanımın bugünden çok daha basit olduğu 10 veya 20 yıl önce yeterli olurdu.

Ben kendim ne bir donanım ne de derleyici gurusu, bu yüzden ikinci yaklaşım olarak, yakl. Isabelle / HOL'da görülen faktör 100:

  • Yukarıdaki "ilk yaklaşım" a göre temel performans kaybı.

  • SML / NJ yığın yönetimi ve GC'nin onlarca MB'nin ötesinde ölçekleme konusunda ciddi sorunları var; Isabelle şimdi rutin olarak 100-1000 MB kullanıyor, bazen birkaç GB kullanıyor.

  • SML / NJ derlemesi çok yavaş - bu tamamen alakasız olabilir (Isabelle / HOL'un çalışma zamanı derlemesini ve çalıştırma kodunu değiştirdiğini unutmayın).

  • SML / NJ, yerel çoklu kullanımdan yoksundur - tamamen ilgisiz değildir, çünkü CPS "ayrı yığınlar olmadan kullanıcı alanında kendi iş parçacıklarınızı yuvarlayın" olarak ilan edildi.

Öbek ve ipliklerin korelasyonu ayrıca Morriset / Tolmach PPOPP 1993 "Procs and Locks: New Jersey Standart ML için Taşınabilir Çok İşlemli Platform" ( CiteSeerX ) tarafından da tartışılmıştır. Not: CiteSeerX'te PDF geriye dönük, sayfalar 10- 1-10 yerine 1.

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.