Omvendt indeks for sideobjekter

HotPDF vedligeholder et dokumentlokalt omvendt indeks fra sideobjektidentitet til en nulbaseret sideposition

Opslagsadfærd

GetPageArrIndexForObjectNumber accepterer et PDF-objektnummer, mens GetPageArrIndexForObject accepterer enten et løst sideobjekt eller et THPDFLink

Begge metoder returnerer -1, når værdien ikke identificerer en aktuel side

Hvis misdannet input eksponerer den samme identitet mere end én gang, vinder den første side i dokumentrækkefølge deterministisk

Opbygning og invalidering

Indekset bygges dovent ved første opslag og bruger separate åbent adresserede tabeller til objektnumre og løste objektmarkører

Indlæsning, nulstilling, tilføjelse, sletning, kopiering, udskiftning, flytning, vending, ombytning, omarrangering eller afstemning af sider invaliderer tabellerne

Det næste opslag genopbygger begge tabeller ud fra den aktuelle siderækkefølge, så ændringsomkostningen ikke omfatter en ivrig genopbygning af indekset

Ydeevne og ejerskab

Tabellerne holder deres belastningsfaktor under en halv og giver forventet konstanttidsopslag efter en O(page count)-opbygning

En regressionsport udfører én million opslag efter ændring i en tabel med 100.000 sider og kræver p95-latenstid under 5 mikrosekunder på begge understøttede Windows-mål

Indekset lagrer ikke-ejede objektmarkører og frigives sammen med sin THotPDF-instans

Undlad at ændre en THotPDF-instans samtidig med sideopslag, da ændring af det indlæste dokumentgraf fortsat serialiseres af kaldende kode

Se også: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics