Omvänd sidobjekt-index

HotPDF underhåller ett dokumentlokalt omvänt index från sidobjektets identitet till den nollbaserade sidpositionen

Sökningsbeteende

GetPageArrIndexForObjectNumber accepterar ett PDF-objektnummer, medan GetPageArrIndexForObject accepterar antingen ett upplöst sidobjekt eller en THPDFLink

Båda metoderna returnerar -1 när värdet inte identifierar en aktuell sida

Om felformaterad indata exponerar samma identitet mer än en gång vinner den första sidan i dokumentordningen deterministiskt

Byggnation och ogiltigförklaring

Indexet byggs lat vid första selokningen och använder separata öppen-adresserade tabeller för objektnummer och upplösta objektspekare

Inläsning, återställning, tillägg, borttagning, kopiering, ersättning, flyttning, omkastning, byte, omsortning eller avstämning av sidor ogiltigförklarar tabellerna

Nästa selokning bygger om båda tabellerna från den aktuella sidordningen, så mutationskostnaden inkluderar inte en ivrig indexombuggning

Prestanda och ägande

Tabellerna håller sin lastfaktor under hälften och ger förväntad konstant-tid-selokning efter en byggnation av komplexitet O(sidantal)

En regressionsspärr utför en miljon selokningar efter mutation i en tabell med 100 000 sidor och kräver p95-latens under 5 mikrosekunder på båda stödda Windows-mål

Indexet lagrar icke-ägande objektspekare och frigörs tillsammans med sin THotPDF-instans

Mutera inte en THotPDF-instans samtidigt som du söker efter sidor, eftersom mutation av den inlästa dokumentgrafen förblir anroparallelliserad

Se även: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics