THotPDF Windowed Local File Mapping

ควบคุม memory mapping แบบอ่านอย่างเดียวที่มีขอบเขต ซึ่ง LoadFromFile ใช้กับเอกสารในเครื่องขนาดใหญ่

การประกาศ

property LocalFileMappingThreshold: Int64;
property LocalFileMappingWindowSize: Integer;
property LocalFileMappingCacheWindows: Integer;
property LocalFileMappingAdaptiveGeometry: boolean;
property LastLoadUsedMemoryMapping: boolean;

function GetLastMappedFileStatistics(
  out Statistics: THPDFMappedFileStatistics): boolean;

ค่าเริ่มต้น

การตั้งค่าค่าเริ่มต้นความหมาย
LocalFileMappingThreshold8 MiBขนาดซอร์สขั้นต่ำที่เลือกใช้ memory mapping ค่าศูนย์ปิด mapping
LocalFileMappingWindowSize16 MiBจำนวน bytes ที่หนึ่ง view ซึ่ง align ตาม allocation granularity ครอบคลุม
LocalFileMappingCacheWindows4จำนวน view สูงสุดที่ LRU cache เก็บไว้
LocalFileMappingAdaptiveGeometryTrueจัดสรร limit ของ mapped bytes เดิมใหม่เพื่อรองรับการอ่านแบบ sequential หรือ random ต่อเนื่อง

สถิติ

THPDFMappedFileStatistics = record
  FileSize: Int64;
  ConfiguredWindowSize: Int64;
  ConfiguredCacheWindowCount: Integer;
  WindowSize: Int64;
  CacheWindowCount: Integer;
  MappedByteLimit: Int64;
  CurrentMappedBytes: Int64;
  PeakMappedBytes: Int64;
  GeometryChangeCount: Int64;
  SequentialReadCalls: Int64;
  RandomReadCalls: Int64;
  AdaptiveGeometry: Boolean;
  SequentialGeometryActive: Boolean;
  RandomGeometryActive: Boolean;
  ReadCalls: Int64;
  BytesRead: Int64;
  MapCount: Int64;
  CacheHits: Int64;
  FallbackReadCalls: Int64;
  FallbackBytes: Int64;
  DirectTransferCalls: Int64;
  DirectTransferBytes: Int64;
end;

GetLastMappedFileStatistics คืนค่า True เฉพาะเมื่อ LoadFromFile ครั้งล่าสุดเลือกใช้ mapping

MapCount นับ view ใหม่ ส่วน CacheHits นับการอ่านที่ใช้ view เดิม ทำให้แอปและ benchmark ปรับ window geometry ให้เข้ากับรูปแบบการเข้าถึงจริงได้

MappedByteLimit คงที่ ขณะที่ WindowSize กับ CacheWindowCount รายงาน geometry ที่กำลังใช้งาน peak mapped bytes, จำนวน pattern และ mode flags ทำให้การปรับทุกครั้งตรวจสอบได้

ประเภทซอร์สขั้นสูง

THPDFMappedFileSource เป็นเจ้าของ file handle ที่ใช้ร่วมกัน, mapping object, synchronized LRU windows, reference count และเส้นทาง positional fallback

THPDFMappedFileStream เปิด slice แบบ seek ได้ที่มีขอบเขตเหนือซอร์สนั้น ส่วน THPDFMappedFileWindow อธิบาย view ภายในหนึ่งชิ้นที่ถูกแคชไว้

พฤติกรรม

ดูเพิ่มเติม: LocalFileMappingAdaptiveGeometry, LoadFromFile, Scalable Loading, HPDFTransferStream, LoadedStreamMemoryThreshold