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