This line
|
buf = InMemoryBuffer.load(mode=InMemoryBuffer.LoadMode.SEGMENTS) |
calls
InMemoryBuffer.load(mode=SEGMENTS) inside
_find_all_simd. _load_segments iterates every segment and does
idaapi.get_bytes(...) +
bytearray.extend(...). For a 5 MB image that's a fresh 5 MB allocation + copy per is_unique call, per instruction added to the growing signature.
A typical function needs 5–40 instructions worth of growth before becoming unique and we do tens of full image rebuilds per signature.
I would like to work on a PR to fix this.
This line
ida-pro-mcp/src/ida_pro_mcp/ida_mcp/_sigmaker.py
Line 1000 in 8461a5f
calls
InMemoryBuffer.load(mode=SEGMENTS)inside_find_all_simd. _load_segmentsiterates every segment and doesidaapi.get_bytes(...)+bytearray.extend(...). For a 5 MB image that's a fresh 5 MB allocation + copy per is_unique call, per instruction added to the growing signature.A typical function needs 5–40 instructions worth of growth before becoming unique and we do tens of full image rebuilds per signature.
I would like to work on a PR to fix this.