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