THPDFCoalescingRandomAccessSource Class

Käärii minkä tahansa THPDFRandomAccessSource-lähteen rajoitettuun aluevälimuistiin ja peruutustietoiseen asynkroniseen esihakemiseen

Määrittely

constructor Create(
  ASource: THPDFRandomAccessSource;
  OwnsSource: Boolean = False;
  BlockSize: Integer = 262144;
  MaxCacheBytes: Int64 = 2097152;
  MaxEntryBytes: Int64 = 0;
  MaxCacheEntries: Integer = 0;
  AdaptiveAdmission: Boolean = True);

procedure PrefetchRange(Offset, Count: Int64);
procedure ObserveReadPattern(Offset: Int64; Count: Integer);
function TransferAt(Offset, Count: Int64;
  Destination: TStream): Int64;
procedure CancelPrefetch;
function IsPrefetchActive: Boolean;
procedure ClearCache;
procedure ConfigureCacheAdmission(MaxCacheBytes,
  MaxEntryBytes: Int64; MaxCacheEntries: Integer;
  AdaptiveAdmission: Boolean = True);
procedure GetStatistics(out Statistics: THPDFRangeCacheStatistics);

property BlockSize: Integer;
property MaxCacheBytes: Int64;
property MaxEntryBytes: Int64;
property MaxCacheEntries: Integer;
property AdaptiveAdmissionEnabled: Boolean;
property AsyncPrefetchEnabled: Boolean;
property AdaptiveReadAheadEnabled: Boolean;
property MaxReadAheadBlocks: Integer;
property SequentialReadToleranceBytes: Integer;

Alueiden yhdistely

Asynkroninen esihakeminen ja peruutus

PrefetchRange ajoittaa yhden tausta-alueen ja korvaa siihen liittymättömän aiemman pyynnön

Etualan välimuistin ohitus aktiivisen alueen ulkopuolella peruuttaa työntekijän ennen lähdelukon hankkimista, jolloin yhteistoiminnallinen siirto voi väistyä nopeasti näkyvän operaation tieltä

Ohita THPDFRandomAccessSource.ReadAtCancellable tarkistaaksesi toimitetun THPDFCancellationToken-tunnuksen verkko- tai tallennus-I/O:n aikana; peritty toteutus tarkistaa peruutuksen välittömästi ennen ReadAt-kutsua ja sen jälkeen

Aseta AsyncPrefetchEnabled arvoon False, kun siirtokäytäntö kieltää taustapääsyn

Sopeutuva ennakkoluku

Jäsentimen virta kutsuu ObserveReadPattern-metodia jokaisen onnistuneen lukemisen jälkeen; jatkuvat eteenpäin lukemiset kasvattavat ennakkolukuikkunaa 1, 2, 4 ja 8 lohkon kautta, kun taas haku tai taaksepäin pääsy vaimentaa välittömästi spekulatiivisen siirron

SequentialReadToleranceBytes hyväksyy pienet eteenpäin aukot peräkkäisenä lukemisena ja oletusarvo on 4096 tavua; MaxReadAheadBlocks rajoittaa sopeutuvan ikkunan 1–32 lohkoon ja oletusarvo on 8

Tehokasta ikkunaa rajoittaa myös MaxCacheBytes, joten ennakkoluku ei voi tarkoituksella ylittää määritettyä välimuistikapasiteettia; peräkkäisyyden luottamus palautuu vähitellen satunnaisen hypyn jälkeen

Aseta AdaptiveReadAheadEnabled arvoon False kiinteää yhden lohkon esihakemista varten samalla kun säilytät asynkronisen siirron

Tilastot

TransferAt hankkii säilytettyjen välimuistilohkojen viittaukset ja kirjoittaa ne kohteeseen varaamatta tai täyttämättä välimuistissa olevaa lukupuskuria

THPDFRangeCacheStatistics raportoi taustavaraston lukemismäärän ja -tavut, välimuistin osumat ja ohitukset, välimuistin sisäänpääsyt, hylkäykset ja poistot, taajuussisäänpääsyt, hylkäykset ja ikääntymisen, esihakupyynnöt, valmistumiset ja peruutukset, peräkkäiset ja satunnaiset lukemiset, vaimennetut esihakemiset, nykyiset ja huippuarvoiset ennakkolukulohkot, suorat siirtokutsut ja -tavut sekä nykyisen välimuistissa olevan alueen määrän ja tavut

Omistajuus

Kun OwnsSource on True, kääreen tuhoaminen peruuttaa ja liittää sen työntekijän, vapauttaa välimuistissa olevat alueet ja vapauttaa käärityn lähteen

Liittyvät API:t