Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Derleme ve düzenleyici maliyetlerini azaltmak için F# 11 içeri aktarılan kitaplıkları paylaşır ve yinelenen çözümlemeleri önler. Sürüm genelinde hız veya bellek geliştirmesi varsaymak yerine etkilenen iş yükünü ölçün.
İçe aktarılan ikili kitaplık paylaşımı
FSharp.Compiler.Service, aynı ikili bağımlılıkları kullanan projeler arasında uygun içeri aktarılan kitaplık grafiklerini paylaşabilir.
FSharpChecker.Create
shareImportedAssembliesvarsayılan olarak etkin olarak kullanıma sunar. Bu, her proje için tam bağımsız içeri aktarılan grafiğin korunmasını önler.
Paylaşım için çözümlenen bağımlılıkların ve içeri aktarma ayarlarının eşleşmesi gerekir. Proje referansları, tür sağlayıcıları, çok modüllü derlemeler ve belirsiz bağımlılık kapanışları dışlanır. Çerçeve içe aktarmaları zaten paylaşıldı.
uygulayan PR, tüm projeler denetlenip tutulduktan sonra tutulan belleği ölçtü. On projelik ReSharper.FSharp iş yükü, bu paylaşım olmadan 1.547,2 MB ve onunla 1.002,2 MB kullandı. Derleyici çözümünün iş yükü yalnızca %0,1 değişti. Bunlar, evrensel yükseltme tasarrufları değil, değişikliğe özgü denemelerdir. Büyük ikili başvurularda çakışma, farkın büyük bir kısmını açıklar.
Tutulan meta veriler ile geçici ayırmalar karşılaştırması
F# 11 yavaş oluşturma, daha küçük tablolar ve yeniden kullanma yoluyla tutulan meta verileri azaltır. Ayrıca meta veri okuma ve satır içi özelleştirme daha az geçici veri ayırır. Korunan yığın, ayırma hacmi ve proses belleği farklı ölçümlerdir; bu çakışan denemelerin sonuçlarını toplamayın.
Editör analizi ve gezintisi
Aşağıdaki geliştirmeler farklı katmanlar için geçerlidir:
| Bileşen | İşten kaçınıldı veya sınırlandı |
|---|---|
| Visual Studio tanılama araçları | Metin ve proje sürümleri, yollar ve seçenekler dikkate alındığında, değişmemiş belge tanılamalarını yeniden kullanır. Bu, rastgele eski sonucun yeniden kullanılmasını değil, yinelenen atıl durum analizini hedefler. |
| Visual Studio Başvuruların Tümünü Bul ve Yeniden Adlandır | İptal desteğini koruyarak her belge için aynı anda bir tane başlatmak yerine eşzamanlı tür denetimlerini sınırlar. |
| Dış simge başvurusu araması | Sembolün ikili derlemesine başvurmayan projeleri atlar. |
| FCS artımlı analiz | Örtüşen isteklerin aynı değişiklik için yinelenen analiz zincirleri oluşturmaması için oluşturucu durumunu senkronize eder. |
Peek düzeltmesi meta veri gezintisi kilitlenmesini önler. Oluşturulan meta veri imzaları için Go To Definition kullanın; Peek yalnızca mevcut belgelerde çalışır. Bu geliştirmeler, yalnızca bir uygulamanın Core paketini değil, güncellenmiş düzenleyici/FCS bileşenlerini de gerektirir.
Derleme ve yapı görevi eşzamanlılığı
Paralel derleme, F# 11'de varsayılan olarak dosya ve derleyici aşaması düzeyinde bağımsız çalışma kullanır. Kaynak sıralama dilin bir parçası olarak kalır; paralellik, ileriye dönük bağımlılıkları yasallaştırmaz.
Derleme görevleri, süreç genelindeki durumu değiştirmek yerine MSBuild'in görev başına ortamını ve yol olanaklarını da kullanır. Aşırı yükleme önbelleklemesi, yinelenen çözümlemeyi azaltır ve korumalı desen derlemesi bazı disjunction/guard kombinasyonlarında katlanarak artan çoğaltmayı önler.
İhtiyacınız olan metriği karşılaştırın
- Derleme gecikmesi için, aynı iyileştirme, deterministik çıktı, referans ve önbellek ayarlarına sahip eşdeğer tam derlemeleri karşılaştırın. Denetimli bir karşılaştırma için
--parallelcompilation-kullanın. - Korunan analiz belleği için aynı projeleri canlı tutun ve canlı yönetilen belleği ayırma hacmi ve işlem belleğinden ayırt edin.
- Yanıt verebilirliği test etmek için düzenleyici eylemini veya boşta iş yükünü yeniden oluşturun. Konsol programının çıkışı bir düzenleyicinin çalışmasını ölçmez.