E-tablo benzeri bir uygulama yapıyorum, burada bir çok küçük hesaplamanın bir ağaç yapısında birleştirilmesi gerekiyor. Bu hesaplamalar kullanıcı tanımlıdır ve kullanıcının çalışma zamanında bunları girmesi için bir yola ihtiyacım var.DLR'de küçük bir ifade DSL'i temel alın veya F # 'da elden bırakmayın.
Şu anki yaklaşımım, F # içinde küçük bir "ifade DSL" yazmaktır; burada, FParsec ile girdiyi ayrıştırıyorum, ayrıştırılmış bir kaynağa dayalı bir sözdizimi ağacı oluşturun ve sonra ifadeyi değerlendirebilirsiniz. Bu oldukça iyi çalışıyor. Ancak, bunun yerine DLR'deki dili temel almayı düşünüyorum. Bu yola devam etmek için herhangi bir yol var mı? (Girdiyi ayrıştırın, AST'yi kendi başıma Scripting.AST kullanarak üretin ve DLR'nin hesaplamayı yürütmesine izin verin)?
Her hesaplama muhtemelen oldukça küçük olacaktır. Hesaplamalar arasındaki bağımlılık daha üst düzeyde ele alınacaktır.
DLR, ifade için CIL kodu üreteceğinden veya bunun üstünü yiyeceğinden daha iyi bir performans bekleyebilir miyim? Bu var
Analizleriniz için teşekkür ederiz. Linq ifade ağaçlarını tamamen gözden kaçırdım. Bu API'yi kullanarak ağaçları oluşturmak için ayrıştırıcımı değiştirmeye çalışacağım ve şimdi F # içinde yaptığım saf yorumlama/değerlendirme ile karşılaştırmak için değerlendirmelerine ilişkin bazı performans testleri gerçekleştireceğim. – Rickard
F # Tekliflerini kullanabileceğinizi ve FSharp.PowerPack.Linq kitaplığında F # Quotation ifadesini bir LINQ İfade Ağacına dönüştürebileceğinizi unutmayın.Bununla ilgili bir sürü doküman yok, ancak ilginizi çekebilir. –