Files

42 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

# Canvas Performance Regression Protection — Walkthrough
HCIE v4 engine API'si üzerindeki 4K tuval optimizasyonlarının yanlışlıkla bozulmasını (regresyon) engellemek için `criterion` kütüphanesi entegre edildi ve dört kritik mekanizma için kalıcı benchmark testleri yazıldı.
## Neler Yapıldı?
1. **`hcie-engine-api/Cargo.toml` Güncellemesi**
- `criterion` kütüphanesi dev-dependency olarak eklendi.
- Her benchmark için özel `[[bench]]` kayıtları tanımlandı.
2. **`active_stroke_mask` Pooling Koruması**
- [benches/stroke_mask_pooling.rs](file:///mnt/extra/00_PROJECTS/hcie-rust-v3.05/hcie-engine-api/benches/stroke_mask_pooling.rs)
- Brush engine'in kullandığı ~8 MB mask buffer'ın `end_stroke()` sırasında serbest bırakılıp bırakılmadığını kontrol eder.
- İlk tahsis (cold) ile sonraki ardışık strokların (warm) sürelerini karşılaştırır.
3. **`composite_scratch` Pooling Koruması**
- [benches/composite_scratch_pooling.rs](file:///mnt/extra/00_PROJECTS/hcie-rust-v3.05/hcie-engine-api/benches/composite_scratch_pooling.rs)
- ~33 MB composite render buffer'ın `render_composite_region()` içinde yeniden kullanıldığını doğrular.
4. **`below_cache` Ardışık Stroke Reuse Koruması**
- [benches/below_cache_reuse.rs](file:///mnt/extra/00_PROJECTS/hcie-rust-v3.05/hcie-engine-api/benches/below_cache_reuse.rs)
- Aynı katmanda birden çok stroke atıldığında alttaki katmanların yeniden derlenmek yerine (cache rebuild) mevcut cache'in kullanıldığını test eder.
- 4K çözünürlükte, 10 katmanlı senaryoda cache build (ilk vuruş) ve cache reuse (ikinci vuruş) maliyetlerini ayırır.
5. **`effects_dirty` Conditional Skip Koruması**
- [benches/effects_skip.rs](file:///mnt/extra/00_PROJECTS/hcie-rust-v3.05/hcie-engine-api/benches/effects_skip.rs)
- Efekt/stili olmayan katmanlarda pahalı effects pipeline (ve 33 MB buffer kopyası) adımının bypass edildiğinden emin olur.
## Doğrulama Sonuçları
- Yeni criterion testlerinin API erişimleri (özellikle `update_layer_style` fonksiyon imzası) ve bağımlılıkları derlenip onaylandı.
- Eski golden testler olan `visual_regression.rs` çalıştırılarak yeni performans testlerinin deterministik render sonuçlarını (pixel-perfect) bozmadığı **doğrulandı** (8/8 başarılı).
- Eski performans testi `performance_stroke_4k.rs` de sorunsuz çalıştırıldı.
> [!TIP]
> **Tüm Benchmark'ları Çalıştırmak İçin:**
> Terminal üzerinden engine dizinine giderek şu komutu kullanabilirsiniz:
> ```bash
> cargo bench -p hcie-engine-api
> ```
> _Not: Bu testler 4K ve çok katmanlı benchmarklar içerdiğinden belleği yoğun kullanır. Sonuçlar `./target/criterion/report/index.html` olarak dökülecektir._