Özet - Performans
- TypeScript kursu
- Uzman
- Ders 26/35
- 4 dk
Performans odaklı bir kütüphane projesi yazarsın.
Özet: performans optimizasyonu
Performans optimizasyonunun üç temel direği vardır: tür karmaşıklığını azaltmak (büyük birleşimleri ve derin özyinelemeyi sadeleştirmek), --generateTrace ile sıcak noktaları bulmak ve project references ile yapıyı bölerek artımlı derleme kurmak. Bu üçü birlikte, büyük TypeScript projelerinde dakikalar yerine saniyeler kazandırır.
tsc --generateTrace ./trace
# en pahalı türü bul
# birleşimleri sadeleştir
# references ile bölÖnce izle, sonra sadeleştir, en son böl.
Uygulama Performans config'ini doğrula
Bir validatePerfConfig fonksiyonu yaz: config'in incremental ve composite alanlarını kontrol etsin; eksikse uyarı dizisine ekleme yapsın. maxNodeCount 1.000.000'den büyükse de uyarı ekle. { incremental: true, composite: true, maxNodeCount: 500000 } config'i için uyarı sayısını yazdır.
Başlangıç kodu
// performans config'ini doğrula
// artımlı ve composite bayraklarını kontrol et
// düğüm sayısı yüksekse uyar
// uyarı sayısını yazdırÖrnek çözüm
type PerfConfig = {
incremental?: boolean;
composite?: boolean;
maxNodeCount?: number;
};
function validatePerfConfig(config: PerfConfig): string[] {
const warnings: string[] = [];
if (!config.incremental) warnings.push("enable incremental");
if (!config.composite) warnings.push("enable composite for references");
if (config.maxNodeCount && config.maxNodeCount > 1000000) {
warnings.push("maxNodeCount very high");
}
return warnings;
}
const config = { incremental: true, composite: true, maxNodeCount: 500000 };
console.log(validatePerfConfig(config).length);Beklenen çıktı
0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Performans optimizasyonunun doğru sırası nedir?
- Önce sadeleştir, sonra izle, en son böl
- Önce izle, sonra sadeleştir, en son böl Doğru cevap
- Önce izle, sonra böl, en son sadeleştir
- Önce böl, sonra sadeleştir, en son izle
Açıklama: Önce izleme yapılarak sıcak nokta bulunur, sonra tür karmaşıklığı sadeleştirilir, en son yapı bölünür; sıcak nokta bilinmeden sadeleştirme veya bölme kör olur.
2 Sadeleştirme örüntüsü
// app → core → utils
// app değişirse: yalnızca ____ yeniden derlenir
// app → core → utils
// app değişirse: yalnızca app yeniden derlenir
Açıklama: Bağımlılık zincirinde yaprak değişirse yalnızca o proje yeniden derlenir; bağımlıları etkilenmediği için utils, core ve tümü yanlıştır.
3 Performans parçaları
| Kavram | Anlamı |
|---|---|
--generateTrace |
sıcak noktayı bulur |
Tür sadeleştirme |
karmaşıklığı azaltır |
Project references |
yapıyı böler |
.tsbuildinfo |
artımlı önbellek |