| |
|
| | import time
|
| | import uuid
|
| | import numpy as np
|
| | import sys
|
| | import os
|
| |
|
| |
|
| | sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
|
| |
|
| | from core.engine import HAIMEngine
|
| | from core.node import MemoryNode
|
| | from core.binary_hdv import BinaryHDV
|
| | from core.engine import HAIMEngine
|
| | from core.node import MemoryNode
|
| | from core.binary_hdv import BinaryHDV
|
| | from core.config import get_config, reset_config
|
| | import os
|
| |
|
| | import asyncio
|
| |
|
| | async def benchmark_query():
|
| | print("Initializing Engine...")
|
| | os.environ["HAIM_ENCODING_MODE"] = "binary"
|
| | reset_config()
|
| | engine = HAIMEngine()
|
| | await engine.initialize()
|
| |
|
| |
|
| | count = 2000
|
| | print(f"Generating {count} dummy memories...")
|
| |
|
| | engine.tier_manager.hot.clear()
|
| |
|
| | dim = engine.dimension
|
| |
|
| | start_gen = time.time()
|
| | for i in range(count):
|
| |
|
| | data = np.random.randint(0, 2, size=(dim // 8), dtype=np.uint8)
|
| | hdv = BinaryHDV(data=data, dimension=dim)
|
| |
|
| | node = MemoryNode(
|
| | id=f"mem_{i}",
|
| | hdv=hdv,
|
| | content=f"Dummy content {i}",
|
| | metadata={}
|
| | )
|
| | node.tier = "hot"
|
| | engine.tier_manager.hot[node.id] = node
|
| |
|
| | engine.tier_manager._add_to_faiss(node)
|
| |
|
| | print(f"Generation took {time.time() - start_gen:.4f}s")
|
| |
|
| |
|
| | print("Benchmarking Query...")
|
| | query_text = "test query"
|
| |
|
| |
|
| | await engine.query(query_text, top_k=5)
|
| |
|
| | start_time = time.time()
|
| | iterations = 50
|
| | for _ in range(iterations):
|
| | await engine.query(query_text, top_k=5)
|
| |
|
| | total_time = time.time() - start_time
|
| | avg_time = total_time / iterations
|
| |
|
| | print(f"Average Query Time over {iterations} runs: {avg_time*1000:.2f} ms")
|
| | print(f"Total Time: {total_time:.4f}s")
|
| |
|
| | if __name__ == "__main__":
|
| | asyncio.run(benchmark_query())
|
| |
|