Sharded Loaded-Image Decode Cache

HotPDF kombinuje nezávisle zamykané metadáta vyrovnávacej pamäte s presnou koordináciou singleflight podľa kľúča

Paralelná práca

Šestnásť fragmentov metadát obmedzuje kontenciu počas vyhľadávania, prijímania a vyraďovania, zatiaľ čo nákladné dekódovanie obrázkov beží mimo zámkov vyrovnávacej pamäte

Požiadavky na rôzne kľúče sa môžu dekódovať súbežne a požiadavky na rovnaký kľúč volia jedného vlastníka, ktorého dokončený výsledok sa zdieľa so všetkými čakajúcimi volajúcimi

Globálne hranice

ImageCacheMaxBytes, maximálny počet položiek a maximálna veľkosť na položku sa vzťahujú na kombinovaný obsah všetkých fragmentov

Orezávanie naprieč fragmentmi zachováva presné nakonfigurované limity a vyhýba sa výberu práve vloženého fragmentu, keď iný fragment môže uspokojiť požiadavku na vyradenie

Vlastníctvo a životnosť

AcquireLoadedImageStream a AcquireLoadedImageRegionAtResolution vracajú nemenné popisovače s počítaním referencií, takže teplé zásahy a čakajúci singleflight zdieľajú dekódované úložisko bez kopírovania pixelov

Popisovač zostáva platný po vyradení z vyrovnávacej pamäte, zneplatnení a zničení dokumentu, zatiaľ čo CreateBitmapCopy poskytuje izolovanú bitmapu vlastnenú volajúcim, keď sa vyžadujú meniteľné pixely

Staršie metódy vyrovnávaného dekódovania si zachovávajú zmluvu TBitmap vlastneného volajúcim materializáciou jednej kópie z popisovača

Telemetria

GetImageDecodeConcurrencyInfo vystavuje živé a kumulatívne počítadlá súbežnosti

Počítadlá vystavujú získania popisovačov, kópie kompatibilných bitmap a skopírované bajty okrem paralelnej aktivity vlastníkov a singleflight

Súvisiace API

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo