- Updated stroke cache to use parallel processing for pixel checks. - Modified benchmark commands in notlar.txt to ensure consistent output and baseline comparisons. - Created a plan for merging criterion directories and optimizing benchmark performance, including pre-allocation of buffers and various optimization strategies. - Removed redundant output directory settings in benchmark files and ensured all benchmarks write to a single criterion directory. - Updated documentation to reflect changes in benchmark paths and configurations.
2.9 KiB
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ı?
-
hcie-engine-api/Cargo.tomlGüncellemesicriterionkütüphanesi dev-dependency olarak eklendi.- Her benchmark için özel
[[bench]]kayıtları tanımlandı.
-
active_stroke_maskPooling Koruması- 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.
-
composite_scratchPooling Koruması- benches/composite_scratch_pooling.rs
- ~33 MB composite render buffer'ın
render_composite_region()içinde yeniden kullanıldığını doğrular.
-
below_cacheArdışık Stroke Reuse Koruması- 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.
-
effects_dirtyConditional Skip Koruması- 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_stylefonksiyon 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.rsde sorunsuz çalıştırıldı.
Tip
Tüm Benchmark'ları Çalıştırmak İçin: Terminal üzerinden engine dizinine giderek şu komutu kullanabilirsiniz:
cargo bench -p hcie-engine-apiNot: Bu testler 4K ve çok katmanlı benchmarklar içerdiğinden belleği yoğun kullanır. Sonuçlar
./criterion/report/index.htmlolarak dökülecektir. CRITERION_HOME,.cargo/config.tomliçinderelative = trueolarak ayarlanmıştır; tümcargo benchçağrıları workspace root'takicriterion/dizinine yazar.