THotPDF Cache Admission Policies

Controla a admissão no cache de forma independente para intervalos brutos comprimidos da fonte, imagens decodificadas, listas de exibição de página compiladas e páginas rasterizadas 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;

Limites padrão

CamadaEntradasBytes totaisPor entradaAdaptativo
clkRawCompressed82 MiB256 KiBSim
clkDecoded25632 MiB16 MiBSim
clkDisplayList6464 MiB16 MiBSim
clkRaster8128 MiB64 MiBSim

Comportamento de admissão

Uma política habilitada exige limites positivos de entrada, bytes totais e por entrada, e o limite por entrada não deve exceder o limite de bytes totais

Alterar uma camada nunca altera outra camada, e reduzir um limite remove imediatamente as entradas menos usadas recentemente até que o cache afetado caiba

Com AdaptiveAdmission habilitado, a ordem de menos usados recentemente permanece como o caminho rápido de recência, enquanto um esboço de frequência limitado de quatro vias compara um novo candidato com cada vítima necessária antes da remoção

Um candidato mais frio ignora a retenção sem perturbar a solicitação atual, frequência igual favorece o candidato mais novo e o envelhecimento periódico dos contadores permite que um conjunto de trabalho alterado substitua entradas quentes históricas

Defina AdaptiveAdmission como False para manter os mesmos limites rígidos com admissão pura de menos usados recentemente

Entradas maiores que MaxEntryBytes são usadas para a operação atual, mas ignoram a retenção, impedindo que uma imagem decodificada, lista de exibição ou página renderizada grande desloque entradas menores reutilizáveis

Definir Enabled como False com limites zero desabilita a retenção para essa camada, enquanto ResetCacheAdmissionPolicies restaura todos os quatro padrões

Estatísticas

THPDFCacheAdmissionStatistics retorna os limites ativos, o modo adaptativo, a ocupação atual de entradas e bytes, acertos, erros, admissões aceitas, admissões rejeitadas, remoções por capacidade, decisões de frequência e ciclos de envelhecimento

As estatísticas de intervalo bruto descrevem a fonte de coalescência automática criada por LoadFromRandomAccessSource; uma THPDFCoalescingRandomAccessSource fornecida explicitamente retém sua configuração selecionada pelo chamador

Propriedades de compatibilidade

RenderCacheCapacity atualiza o limite de entradas de rasterização e ImageCacheMaxBytes atualiza o limite de bytes totais de imagem decodificada pelo mesmo caminho de validação de política e corte imediato

Consulte também: Carregamento Escalável, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource