File size: 1,054 Bytes
2ff82ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class DRAMCache:
    def __init__(self, size_mb=512):
        self.size_mb = size_mb
        self.cache = {}
        self.access_order = []

    def read(self, key):
        if key in self.cache:
            self.access_order.remove(key)
            self.access_order.append(key)
            return self.cache[key]
        return None

    def write(self, key, value):
        if key in self.cache:
            self.access_order.remove(key)
        elif len(self.cache) >= self.size_mb * 256:  # Assume 4KB per entry
            oldest = self.access_order.pop(0)
            del self.cache[oldest]
        self.cache[key] = value
        self.access_order.append(key)

class Buffer:
    def __init__(self, size_mb=64):
        self.size_mb = size_mb
        self.buffer = []

    def add(self, data):
        self.buffer.append(data)
        if len(self.buffer) > self.size_mb * 256:
            self.buffer.pop(0)

    def flush(self):
        flushed = self.buffer[:]
        self.buffer = []
        return flushed