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

LivelloVociByte totaliPer voceAdattiva
clkRawCompressed82 MiB256 KiBSì
clkDecoded25632 MiB16 MiBSì
clkDisplayList6464 MiB16 MiBSì
clkRaster8128 MiB64 MiBSì

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