2012-01-28 39 views
8

'de dinamik olarak yüklenen kodlara erişen tipik kod oluşturdu. Hashell kaynak kod yazımına hızlı bir şekilde (saniyede 1000'lerce yazım) ihtiyacım var.Haskell

hint'u denedik, ancak bazı durumlarda kaynak kodumuz bulunmadığı sürece, dinamik olarak yüklenmiş kodlara erişemedikçe yeterince hızlıydı. Belki de dinamik olarak yüklenmiş kodu bir paket veya bir şey olarak kaydetmenin bir yolu var.

ghc api'yi kullanmayı denedik, ancak dosyaların diskte olmasını ve IO'nun gereken tüm dosyaların çok yavaş olmasını gerektiriyor gibi görünüyor.

Kodu oluşturmak için haskell-src-exts'u kullanabiliriz, ancak bunu tekrar yazmamız gerekiyor.

+1

yapabildin gerekirse GHC api çözümü ile devam edin ve bir ram diskte gerekli olan her şeyi koyun? – monk

+0

Bu, son kullanıcılara dağıtılacak bir uygulamadır, bu yüzden sistem yapılandırmaları üzerinde kontrol sahibi değilim. – mentics

+2

dosya konumu yerine GHC API dosya tanımlayıcılarını beslemek mümkün olabilir mi? Öyleyse, içerik için diskten bahsetmekten kaçınmak zor olmaz (ram içinde olduğunu varsayalım) –

cevap

0

Saniyede binlerce tür çekişme, sırayla mümkün görünmüyor - bu eşzamanlı olarak yapıyorsunuz, umarım paralellik için bir umut var mı?

Ve tam GHC tipi sistemi desteklediğinizi varsayalım? Bu yüzden soyulmuş tipte bir denetleyici (ör. THIH yeterli olmaz).

  • Kullanım bayt ile ghc-api ve
  • ghc değişiklikler gönderin bellekte
  • Önbellek her şeyin bellek tamponları gelen FDS alabilir sağlamak için hiçbir optimizasyonları
Belki
+0

Aslında, İpucu bize saniyede en az bin veriyordu sanırım. Ama bu nesne kodu ile işe yaramazdı, bu yüzden farklı bir çözüm bulmak zorundaydı. Bununla birlikte, bahsettiğiniz "sıralı olarak" bir başka çözüm var: tek bir dosyada gerekli tüm typechecks koymak ve sadece bir kez kontrol yazın. Hata mesajlarını çevirmek biraz zor olabilir, ama denediğimiz basit şeyler için işe yaramış gibi görünüyordu. – mentics

+0

"Saniyede bin" - ama programa bağlı - ve tip denetleyicisinin sonlandırılmamasına neden olan bazı programlar var ... –