Okenné mapovanie lokálnych súborov THotPDF
Riadi ohraničené mapovanie pamäte určené len na čítanie používané metódou LoadFromFile pre veľké lokálne dokumenty
Deklarácie
property LocalFileMappingThreshold: Int64;
property LocalFileMappingWindowSize: Integer;
property LocalFileMappingCacheWindows: Integer;
property LocalFileMappingAdaptiveGeometry: boolean;
property LastLoadUsedMemoryMapping: boolean;
function GetLastMappedFileStatistics(
out Statistics: THPDFMappedFileStatistics): boolean;
Predvolené hodnoty
| Nastavenie | Predvolená hodnota | Význam |
|---|---|---|
LocalFileMappingThreshold | 8 MiB | Minimálna veľkosť zdroja, ktorá vyberie mapovanie pamäte; nula vypne mapovanie |
LocalFileMappingWindowSize | 16 MiB | Bajty pokryté jedným pohľadom zarovnaným na granularitu alokácie |
LocalFileMappingCacheWindows | 4 | Maximálny počet rezidentných pohľadov uchovávaných vyrovnávacou pamäťou LRU |
LocalFileMappingAdaptiveGeometry | True | Prerozdeliť rovnaký limit mapovaných bajtov pre trvalý sekvenčný alebo náhodný prístup |
Štatistiky
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 vráti True iba vtedy, keď posledná operácia LoadFromFile vybrala mapovanie
MapCount počíta nové pohľady a CacheHits počíta čítania obslúžené existujúcim pohľadom, čo aplikáciám a benchmarkom umožňuje doladiť geometriu okien podľa skutočných vzorov prístupu
MappedByteLimit zostáva pevný, zatiaľ čo WindowSize a CacheWindowCount hlásia aktívnu geometriu; špičkové mapované bajty, počty vzorov a príznaky režimu robia každú adaptáciu pozorovateľnou
Pokročilé typy zdrojov
THPDFMappedFileSource vlastní zdieľaný popisovač súboru, objekt mapovania, synchronizované okná LRU, počet odkazov a cestu pozičného záložného riešenia
THPDFMappedFileStream vystavuje ohraničený vyhľadávateľný výrez nad týmto zdrojom, zatiaľ čo THPDFMappedFileWindow popisuje jeden uložený interný pohľad
Správanie
- Pohľady sa mapujú iba vtedy, keď čítanie dosiahne ich rozsah, a vyraďujú sa v poradí najmenej nedávno použitých
- Osem trvalých dopredných pozorovaní vyberie väčšie sekvenčné okná, zatiaľ čo osem vzdialených alebo spätných pozorovaní vyberie až 16 menších okien náhodného prístupu
- Adaptívna geometria nikdy neprekročí limit bajtov odvodený z nakonfigurovanej veľkosti a počtu vyrovnávacej pamäte
- Čítania, ktoré prekračujú hranicu okna, sa kopírujú v ohraničených segmentoch bez vytvorenia vyrovnávacej pamäte pre celý súbor
HPDFTransferStreamzapisuje mapované výrezy priamo z každého rezidentného okna a zaznamenáva priame prenosové volania a bajty oddelene od čítaní analyzátora- Toky analyzátora a nezmenené lenivé telá tokov PDF zdieľajú jeden popisovač súboru, objekt mapovania a vláknovo bezpečnú vyrovnávaciu pamäť okien
- Zdroj umožňuje atómové premenovanie alebo odstránenie počas aktivity, zatiaľ čo jeho existujúce mapovanie si zachováva stabilný pohľad na otvorené bajty
- Zlyhanie vytvorenia mapovania vyberie pôvodnú implementáciu
TFileStream, zatiaľ čo neskoršie zlyhanie alokácie pohľadu prepne zdieľaný zdroj na uzamknuté pozičné čítanie súboru - Veľkosti okien pod 64 KiB a počty vyrovnávacej pamäte mimo 1 až 32 vyvolajú
ERangeError
Pozri tiež: LocalFileMappingAdaptiveGeometry, LoadFromFile, Škálovateľné načítanie, HPDFTransferStream, LoadedStreamMemoryThreshold