add python script used to evaluation effect of cache size on number of cache misses

master
melvinzhang 2017-02-10 20:49:40 +08:00
parent c7de473325
commit c9357b2417
1 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,45 @@
# reads lines from stdin representing requests
# outputs percentage of cache misses for various cache sizes
import collections
class LRUCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = collections.OrderedDict()
self.misses = 0
def get(self, key):
try:
value = self.cache.pop(key)
self.cache[key] = value
return value
except KeyError:
self.misses += 1
return -1
def set(self, key, value):
try:
self.cache.pop(key)
except KeyError:
if len(self.cache) >= self.capacity:
self.cache.popitem(last=False)
self.cache[key] = value
caches = [LRUCache(i*10) for i in range(1, 11)]
import sys
seen = set()
cnt = 0
for line in sys.stdin:
cnt += 1
for c in caches:
if line in seen:
c.get(line)
c.set(line, 0)
seen.add(line)
for c in caches:
print c.capacity, c.misses * 100.0 / cnt