nc: 0m18.706s (100% cpu, v1.84, no -q option?
iperf3: without0m10.013s -q(100% optioncpu, but can transfergo truncatedup files...)
iperf3:to 0m10.013sat (least 20Gbe with 100% cpu so not sure it matters)
socat: 0m10.293s (88% cpu, possibly maxed out)
So on one instance netcat used less cpu, on the other socat, so YMMV.
With netcat, if it doesn't have a "-N -q 0" option it can transfer truncated files, be careful...other options like "-w 10" can also result in truncated files.