quicker to adapt to pattern change

This commit is contained in:
chrislu committed 2022-08-07 10:14:01 -07:00
1 parent 928d29af9e
commit 0aeec04c31
2 files changed
+16 -4

No files matched your search

+8 -2
View File
@@ -5,6 +5,8 @@ type ReaderPattern struct {
lastReadStopOffset int64
}
const ModeChangeLimit = 3
// For streaming read: only cache the first chunk
// For random read: only fetch the requested range, instead of the whole chunk
@@ -17,9 +19,13 @@ func NewReaderPattern() *ReaderPattern {
func (rp *ReaderPattern) MonitorReadAt(offset int64, size int) {
if rp.lastReadStopOffset == offset {
rp.isSequentialCounter++
if rp.isSequentialCounter < ModeChangeLimit {
rp.isSequentialCounter++
}
} else {
rp.isSequentialCounter--
if rp.isSequentialCounter > -ModeChangeLimit {
rp.isSequentialCounter--
}
}
rp.lastReadStopOffset = offset + int64(size)
}