Rückwärtsindex für Seitenobjekte

HotPDF unterhält einen dokumentlokalen Rückwärtsindex von der Identität eines Seitenobjekts zur nullbasierten Seitenposition

Nachschlageverhalten

GetPageArrIndexForObjectNumber akzeptiert eine PDF-Objektnummer, während GetPageArrIndexForObject ein aufgelöstes Seitenobjekt oder einen THPDFLink akzeptiert

Beide Methoden geben -1 zurück, wenn der Wert keine aktuelle Seite identifiziert

Falls fehlerhafte Eingaben dieselbe Identität mehrfach offenlegen, gewinnt deterministisch die erste Seite in Dokumentreihenfolge

Aufbau und Invalidierung

Der Index wird beim ersten Nachschlagen verzögert aufgebaut und verwendet getrennte Maps mit offener Adressierung für Objektnummern und aufgelöste Objektzeiger

Laden, Zurücksetzen, Hinzufügen, Löschen, Kopieren, Ersetzen, Verschieben, Umkehren, Tauschen, Neuanordnen oder Abgleichen von Seiten invalidiert die Maps

Die nächste Suche baut beide Maps aus der aktuellen Seitenreihenfolge neu auf, sodass Mutationskosten keinen gierigen Neuaufbau des Index enthalten

Leistung und Besitz

Die Maps halten ihren Füllfaktor unter der Hälfte und bieten erwartete Nachschlagezeit in konstanter Zeit nach einem Aufbau in O(page count)

Eine Regressionssperre führt nach Mutation eine Million Nachschlagevorgänge in einer Tabelle mit 100.000 Seiten aus und verlangt auf beiden unterstützten Windows-Zielen eine p95-Latenz unter 5 Mikrosekunden

Der Index speichert nicht besitzende Objektzeiger und wird mit seiner THotPDF-Instanz freigegeben

Verändern Sie eine THotPDF-Instanz nicht gleichzeitig mit dem Seitennachschlagen, da die Mutation des geladenen Dokumentgraphen weiterhin vom Aufrufer serialisiert wird

Siehe auch: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics