AlgoDatSoSe25/utils/memory_manager.py
Oliver Hofmann 8702bd847e Initial
2025-03-25 14:59:33 +01:00

65 lines
1.9 KiB
Python

class MemoryManager:
instance = None
@staticmethod
def get_instance():
if MemoryManager.instance is None:
MemoryManager.instance = MemoryManager()
return MemoryManager.instance
@staticmethod
def count_cells():
return len(MemoryManager.get_instance().cells)
@staticmethod
def count_reads():
return sum([cell.read_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_writes():
return sum([cell.write_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_compares():
return sum([cell.compare_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_adds():
return sum([cell.add_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_subs():
return sum([cell.sub_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_muls():
return sum([cell.mul_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_divs():
return sum([cell.div_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def count_bitops():
return sum([cell.bitop_count for cell in MemoryManager.get_instance().cells])
@staticmethod
def reset():
manager = MemoryManager.get_instance()
for cell in manager.cells:
cell.reset_counters
@staticmethod
def print_statistics():
print(f"Anzahl der Speicherzellen: {MemoryManager.count_cells()}")
print(f"Anzahl der Lesezugriffe: {MemoryManager.count_reads()}")
print(f"Anzahl der Schreibzugriffe: {MemoryManager.count_writes()}")
print(f"Anzahl der Vergleiche: {MemoryManager.count_compares()}")
def __init__(self):
self.cells = []
def add_cell(self, cell):
self.cells.append(cell)