THotPDF Cache Admission Policies

Controla a admissão em cache de forma independente para os intervalos de origem comprimidos em bruto, as imagens descodificadas, as display lists de página compiladas e as páginas raster renderizadas

Declarações

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;

Default limits

LayerEntriesTotal bytesPer entryAdaptive
clkRawCompressed82 MiB256 KiBSim
clkDecoded25632 MiB16 MiBSim
clkDisplayList6464 MiB16 MiBSim
clkRaster8128 MiB64 MiBSim

Admission behaviour

Uma política ativa exige limites positivos de entradas, de bytes totais e por entrada, e o limite por entrada não pode exceder o limite de bytes totais

Alterar uma camada nunca altera outra e, ao baixar um limite, as entradas menos usadas recentemente são removidas de imediato até a cache afetada caber

Com AdaptiveAdmission ativo, a ordem least-recently-used continua a ser o caminho rápido de recência, enquanto um frequency sketch limitado de quatro vias compara um novo candidato com cada vítima necessária antes da eviction

Um candidato mais frio ignora a retenção sem perturbar o pedido atual, a frequência igual favorece o candidato mais recente, e o envelhecimento periódico dos contadores permite que um working set alterado substitua entradas historicamente quentes

Defina AdaptiveAdmission como False para manter os mesmos limites rígidos com admissão puramente least-recently-used

As entradas maiores do que MaxEntryBytes são usadas na operação atual mas não são retidas, evitando que uma única imagem descodificada, display list ou página renderizada de grande dimensão desloque entradas reutilizáveis mais pequenas

Definir Enabled como False com limites a zero desativa a retenção dessa camada, enquanto ResetCacheAdmissionPolicies repõe os quatro valores por omissão

Estatísticas

THPDFCacheAdmissionStatistics devolve os limites ativos, o modo adaptativo, a ocupação atual em entradas e bytes, hits, misses, admissões aceites, admissões rejeitadas, evictions por capacidade, decisões de frequência e ciclos de envelhecimento

As estatísticas de intervalos em bruto descrevem a origem de coalescing automático criada por LoadFromRandomAccessSource; um THPDFCoalescingRandomAccessSource fornecido explicitamente mantém a configuração escolhida por quem chama

Compatibility properties

RenderCacheCapacity atualiza o limite de entradas raster e ImageCacheMaxBytes atualiza o limite de bytes totais das imagens descodificadas, ambos através da mesma validação de política e do mesmo caminho de trim imediato

Ver também: Carregamento escalável, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource