页面对象反向索引

HotPDF 维护一个文档本地的反向索引,从页面对象标识映射到零基页面位置

查找行为

GetPageArrIndexForObjectNumber 接受 PDF 对象编号,而 GetPageArrIndexForObject 接受已解析的页面对象或 THPDFLink

当值不标识当前页面时,两个方法都返回 -1

如果格式错误的输入多次暴露同一标识,文档顺序中的第一个页面确定性胜出

构建与失效

索引在首次查找时惰性构建,并为对象编号和已解析对象指针使用独立的开放寻址映射

加载、重置、添加、删除、复制、替换、移动、反转、交换、重排或协调页面会使映射失效

下次查找从当前页面顺序重建两个映射,因此变更成本不包括急切索引重建

性能与所有权

映射将负载因子保持在二分之一以下,并在 O(page count) 构建后提供期望常数时间查找

回归门槛在 100,000 页表中于变更后执行一百万次查找,并要求在两个受支持的 Windows 目标上 p95 延迟低于 5 微秒

索引存储非拥有对象指针,并随其 THotPDF 实例释放

不要并发变更 THotPDF 实例与页面查找,因为已加载文档图变更保持调用方串行化

另请参阅: GetPageArrIndexForObjectNumber、GetPageArrIndexForObject、GetPageReverseIndexStatistics