=== ghidra-0001: RecoveredClassHelper O(F*R^2) -> O(F*R) ===

                 scale    defective      fixed    speedup
------------------------------------------------------------
  F= 100 R=  50       6.59ms     1.02ms      6.5x
  F= 500 R=  50      24.10ms     3.63ms      6.6x
  F= 500 R= 200     239.36ms    16.55ms     14.5x
  F=1000 R= 200     449.90ms    36.22ms     12.4x
  F=2000 R= 500    4730.41ms   173.06ms     27.3x

Conclusion: O(F*R^2) -> O(F*R) — Map<Function, LinkedHashSet> hoist.
Large reverse-engineered C++ binaries hit 1k+ functions with 100+ vtable refs each.
=== ghidra-0002: getVttAddresses O(A^2*V + A*V) -> O(A + V) ===

                 scale    defective      fixed    speedup
------------------------------------------------------------
  C=  200 A= 100       1.27ms     0.04ms     28.4x
  C=  500 A= 250       7.25ms     0.09ms     81.0x
  C= 1000 A= 500      30.37ms     0.30ms    102.6x
  C= 2000 A=1000     126.79ms     0.39ms    323.1x
  C= 5000 A=2500     835.46ms     1.09ms    768.5x

Conclusion: hoist the vtableAndVftableAddrs build + Set<Address> for O(1) contains.
Reverse-engineering large gcc-compiled C++ binaries hits 1000+ classes.
