Indice inverso degli oggetti pagina

HotPDF mantiene un indice inverso locale al documento che porta dall'identità degli oggetti pagina alla posizione della pagina a base zero

Comportamento del lookup

GetPageArrIndexForObjectNumber accetta un numero di oggetto PDF, mentre GetPageArrIndexForObject accetta sia un oggetto pagina risolto sia un THPDFLink

Entrambi i metodi restituiscono -1 quando il valore non identifica una pagina corrente

Se un input malformato espone la stessa identità più di una volta, vince in modo deterministico la prima pagina in ordine di documento

Costruzione e invalidazione

L'indice viene costruito pigramente al primo lookup e usa mappe separate ad indirizzamento aperto per numeri di oggetto e puntatori di oggetti risolti

Caricare, azzerare, aggiungere, eliminare, copiare, sostituire, spostare, invertire, riordinare o riconciliare pagine invalida le mappe

Il lookup successivo ricostruisce entrambe le mappe dall'ordine corrente delle pagine, così il costo delle mutazioni non include una ricostruzione eager dell'indice

Prestazioni e proprietà

Le mappe mantengono il load factor sotto la metà e offrono lookup a tempo costante atteso dopo una costruzione O(page count)

Un gate di regressione esegue un milione di lookup dopo la mutazione su una tabella da 100.000 pagine e richiede una latenza p95 sotto i 5 microsecondi su entrambi i target Windows supportati

L'indice conserva puntatori a oggetti senza proprietà e viene rilasciato insieme alla sua istanza THotPDF

Non mutare un'istanza THotPDF in concorrenza con il lookup delle pagine, perché la mutazione del grafo del documento caricato resta serializzata dal chiamante

Vedi anche: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics