Podzielona pamięć podręczna dekodowania załadowanych obrazów

HotPDF łączy niezależnie blokowane metadane pamięci podręcznej z dokładną koordynacją singleflight per klucz

Praca równoległa

Szesnaście shardów metadanych ogranicza konkurencję podczas wyszukiwania, wstępu i ewikcji, podczas gdy kosztowne dekodowanie obrazów działa poza blokadami cache

Żądania różnych kluczy mogą dekodować współbieżnie, a żądania tego samego klucza wybierają jednego właściciela, którego ukończony wynik jest współdzielony ze wszystkimi czekającymi wywołującymi

Granice globalne

ImageCacheMaxBytes, maksymalna liczba wpisów i maksymalny rozmiar wpisu dotyczą łączonej zawartości wszystkich shardów

Przycinanie między shardami zachowuje dokładne skonfigurowane limity i unika wybierania shardu właśnie wstawionego, gdy inny shard może zaspokoić żądanie ewikcji

Własność i czas życia

AcquireLoadedImageStream i AcquireLoadedImageRegionAtResolution zwracają niemodyfikowalne uchwyty z licznikiem referencji, więc ciepłe trafienia i czekający singleflight współdzielą zdekodowany magazyn bez kopiowania pikseli

Uchwyt pozostaje ważny po ewikcji z cache, unieważnieniu i zniszczeniu dokumentu, a CreateBitmapCopy dostarcza odizolowaną bitmapę należącą do wywołującego, gdy potrzebne są mutowalne piksele

Starsze metody dekodowania z pamięci podręcznej zachowują swój kontrakt TBitmap należącego do wywołującego, materializując jedną kopię z uchwytu

Telemetria

GetImageDecodeConcurrencyInfo wystawia bieżące i skumulowane liczniki współbieżności

Liczniki wystawiają pozyskania uchwytów, kopie bitmap kompatybilności i skopiowane bajty, oprócz aktywności równoległych właścicieli i singleflight

Powiązane API

IHPDFDecodedBitmapHandle · AcquireLoadedImageStream · AcquireLoadedImageRegionAtResolution · THPDFImageDecodeConcurrencyInfo