THotPDF Cache Admission Policies
Controlla l'ammissione in cache in modo indipendente per range sorgente compressi raw, immagini decodificate, display list compilate delle pagine e pagine raster renderizzate
Dichiarazioni
THPDFCacheLayerKind = (clkRawCompressed, clkDecoded,
clkDisplayList, clkRaster);
THPDFCacheAdmissionPolicy = record
Enabled: boolean;
AdaptiveAdmission: boolean;
MaxEntries: Integer;
MaxTotalBytes: Int64;
MaxEntryBytes: Int64;
end;
THPDFCacheAdmissionStatistics = record
Enabled: boolean;
AdaptiveAdmission: boolean;
MaxEntries: Integer;
MaxTotalBytes: Int64;
MaxEntryBytes: Int64;
EntryCount: Integer;
CurrentBytes: Int64;
HitCount: Int64;
MissCount: Int64;
AdmissionCount: Int64;
RejectionCount: Int64;
EvictionCount: Int64;
FrequencyAdmissionCount: Int64;
FrequencyRejectionCount: Int64;
FrequencyAgingCount: Int64;
end;
procedure ResetCacheAdmissionPolicies;
procedure SetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
const Policy: THPDFCacheAdmissionPolicy);
function GetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
out Policy: THPDFCacheAdmissionPolicy): boolean;
function GetCacheAdmissionStatistics(Kind: THPDFCacheLayerKind;
out Statistics: THPDFCacheAdmissionStatistics): boolean;
Limiti predefiniti
| Livello | Voci | Byte totali | Per voce | Adattiva |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | Sì |
clkDecoded | 256 | 32 MiB | 16 MiB | Sì |
clkDisplayList | 64 | 64 MiB | 16 MiB | Sì |
clkRaster | 8 | 128 MiB | 64 MiB | Sì |
Comportamento dell'ammissione
Una policy attiva richiede limiti positivi per voci, byte totali e per voce, e il limite per voce non può superare il limite di byte totali
Modificare un layer non cambia mai gli altri layer, e l'abbassamento di un limite rimuove immediatamente le voci least-recently-used finché la cache interessata rientra nei limiti
Con AdaptiveAdmission attivo, l'ordine least-recently-used resta il percorso rapido di recency mentre uno sketch di frequenza a quattro vie limitato confronta ogni nuovo candidato con ogni vittima necessaria prima dell'eviction
Un candidato più freddo bypassa la retention senza disturbare la richiesta corrente, una frequenza pari favorisce il candidato più recente, e l'invecchiamento periodico dei contatori permette a un working set cambiato di sostituire le voci storicamente calde
Impostare AdaptiveAdmission su False per mantenere gli stessi limiti rigidi con ammissione puramente least-recently-used
Le voci più grandi di MaxEntryBytes vengono usate per l'operazione corrente ma bypassano la retention, impedendo a una singola immagine decodificata, display list o pagina renderizzata di grandi dimensioni di estromettere voci più piccole e riutilizzabili
Impostare Enabled su False con limiti a zero disattiva la retention per quel layer, mentre ResetCacheAdmissionPolicies ripristina tutti e quattro i valori predefiniti
Statistiche
THPDFCacheAdmissionStatistics restituisce i limiti attivi, la modalità adattiva, l'occupazione corrente in voci e byte, hit, miss, ammissioni accettate, ammissioni rifiutate, eviction per capacità, decisioni per frequenza e cicli di aging
Le statistiche dei range raw descrivono la sorgente di coalescing automatica creata da LoadFromRandomAccessSource; una THPDFCoalescingRandomAccessSource fornita esplicitamente conserva la configurazione scelta dal chiamante
Proprietà di compatibilità
RenderCacheCapacity aggiorna il limite di voci raster e ImageCacheMaxBytes aggiorna il limite di byte totali delle immagini decodificate attraverso lo stesso percorso di validazione della policy e di trimming immediato
Vedere anche: Caricamento scalabile, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource