我有一个I/O跟踪文件,其中包含以下字段('asu'、'block_address'、'size'、'opcode'和'time_stamp')。数据看起来像这样(超过500万行)。
0,20941264,8192,W,0.551706
0,20939840,8192,W,0.554041
0,20939808,8192,W,0.556202
1,3436288,15872,W,1.250720
1,3435888,512,W,1.609859
1,3435889,512,W,1.634761
0,7695360,4096,R,2.346628
1,10274472,4096,R,2.436645
2,30862016,4096,W,2 448003
2,30845544,4096,W,2.449733
1,10356592,4096,W,2.449733
我正在尝试在我的项目中添加缓存层并希望计算命中和未命中次数。我使用@functools.lru_cache(maxsize = None)
查找块地址的缓存命中和未命中情况。遵循教程,我尝试计算未命中/命中情况。blk_trace
是用于块地址的跟踪数组。
@functools.lru_cache(maxsize = None)
def blk_iter():
blk_len = len(blk_trace)
for i in range(0,blk_len):
print(blk_trace[i])
查看缓存信息blk_iter.cache_info()
,我得到了CacheInfo(hits=0, misses=1, maxsize=None, currsize=1)
,但这不正确。
我对Python和缓存概念都比较陌生,不知道我做错了什么。
如何找到块地址的未命中/命中情况?
blk_iter
而设的--您只调用了一次blk_iter
,因此您的缓存大小为1,并且有一个未命中。此外,函数的返回值是被缓存的内容,而不是它所打印的内容。 - sytech