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
- Välimuistin ohitus laajenee kohdistetuksi lohkoksi, joka kattaa pyydetyt tavut, joten vierekkäiset jäsentimen lukemat jakavat yhden taustavaraston pyynnön
- Välimuisti valvoo riippumattomia kokonaistavu-, merkintäkohtaisia ja valinnaisia merkintämäärärajoja, ja ylisuuri alue ohittaa säilytyksen
- Sopeutuva sisäänpääsy yhdistää vähiten käytetyn järjestyksen rajoitettuun ikääntyvään taajuusluonnokseen, joten kylmät skannaukset lukevat suoraan korvaamatta kuumempia säilytettyjä alueita
- Kun harva lähde ei voi tarjota laajennettua lohkoa, kääre putoaa takaisin tarkkaan saatavilla olevaan pyydettyyn alueeseen
- Lähteen käyttö sarjoitetaan, joten olemassa olevien alaluokkien ei tarvitse muuttua säikeen turvallisiksi
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