Índice inverso de objetos de página

O HotPDF mantém, para cada documento, um índice inverso da identidade do objeto de página para a posição da página (base zero)

Comportamento de pesquisa

GetPageArrIndexForObjectNumber aceita um número de objeto PDF, enquanto GetPageArrIndexForObject aceita um objeto de página já resolvido ou um THPDFLink

Ambos os métodos devolvem -1 quando o valor não identifica uma página atual

Se uma entrada malformada expuser a mesma identidade mais do que uma vez, ganha de forma determinística a primeira página pela ordem do documento

Construction and invalidation

O índice é construído de forma lazy na primeira pesquisa e usa mapas de endereçamento aberto separados para números de objeto e para ponteiros de objetos resolvidos

Carregar, repor, adicionar, eliminar, copiar, substituir, mover, inverter, trocar, reordenar ou reconciliar páginas invalida os mapas

A pesquisa seguinte reconstrói ambos os mapas a partir da ordem atual das páginas, pelo que o custo de uma modificação não inclui uma reconstrução imediata do índice

Desempenho e propriedade

Os mapas mantêm o fator de carga abaixo de metade e oferecem pesquisa em tempo constante esperado depois de uma construção em O(page count)

Um teste de regressão faz um milhão de pesquisas após modificação numa tabela de 100 000 páginas e exige uma latência p95 inferior a 5 microssegundos nos dois alvos Windows suportados

O índice guarda ponteiros de objetos sem os possuir e é libertado juntamente com a respetiva instância de THotPDF

Do not mutate a THotPDF instance concurrently with page lookup because loaded-document graph mutation remains caller-serialized

Ver também: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics