=== numpy-0001: f2py _get_depend_dict — O(n²) linear dedup in dependency resolution ===
N=100   k=100  : defective=0.102ms  fixed=0.004ms  speedup=25.1x
N=500   k=500  : defective=2.607ms  fixed=0.025ms  speedup=103.1x
N=1000  k=1000 : defective=10.796ms  fixed=0.055ms  speedup=197.3x
N=2000  k=2000 : defective=35.435ms  fixed=0.096ms  speedup=370.1x

=== numpy-0002: numpy-0001: stack_arrays — seen=[] list dedup O(A×F²) field-name tracking ===
N=100   k=100  : defective=0.084ms  fixed=0.003ms  speedup=25.7x
N=500   k=500  : defective=2.165ms  fixed=0.021ms  speedup=103.3x
N=1000  k=1000 : defective=8.793ms  fixed=0.045ms  speedup=197.1x
N=2000  k=2000 : defective=35.157ms  fixed=0.095ms  speedup=369.5x

=== numpy-0003: numpy-0002: join_by — names list rebuilt inside loop + .index() O(F²) ===
N=100   k=100  : defective=0.084ms  fixed=0.003ms  speedup=25.2x
N=500   k=500  : defective=2.133ms  fixed=0.021ms  speedup=101.8x
N=1000  k=1000 : defective=8.693ms  fixed=0.047ms  speedup=186.5x
N=2000  k=2000 : defective=35.553ms  fixed=0.096ms  speedup=369.9x

