Carregamento preguiçoso de árvore de páginas

O HotPDF pode reter uma árvore de páginas PDF carregada comum como uma tabela de espaço reservado compacta e resolver páginas individuais apenas quando uma API precisar delas pela primeira vez

Ativação

LazyPageTreeThreshold tem como padrão 4096 páginas e se aplica a árvores de páginas válidas cuja raiz expõe uma estrutura /Count e /Kids utilizável

Defina o limite como 0 antes do carregamento para desabilitar o tratamento preguiçoso de árvore de páginas

Arquivos abaixo do limite e árvores malformadas continuam pelo caminho de recuperação ansioso existente

Acesso aleatório

O primeiro acesso a uma página segue os valores /Count da subárvore para pular ramos não relacionados e resolve objetos indiretos por meio de um índice de endereçamento aberto local ao documento

A página resolvida é armazenada em seu slot de espaço reservado, de modo que o acesso repetido é um acerto direto de cache

APIs comuns de página carregada materializam a página solicitada de forma transparente, enquanto MaterializeLoadedPage permite que os chamadores preparem uma página conhecida explicitamente

Expansão completa e mutação

MaterializeAllLoadedPages expande a árvore restante em ordem canônica de páginas

Operações que adicionam, excluem, copiam, substituem, movem, invertem, trocam, reconstroem ou salvam páginas carregadas estruturalmente realizam expansão completa antes de mutar ou serializar o grafo de páginas

Isso preserva a semântica existente de mutação e salvamento enquanto mantém o acesso orientado à leitura proporcional à profundidade do ramo percorrido

Telemetria

GetLoadedPageTreeStatistics relata armazenamento de espaço reservado, páginas materializadas, profundidade e trabalho de travessia, capacidade do índice de objetos, atividade de cache e expansões completas sem forçar a materialização

Um portão de regressão cobre 100.000 páginas com um teto de crescimento de conjunto de trabalho de 256 MiB e um teto de 500 ms para o primeiro acesso aleatório em alvos Windows suportados

Veja também: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics