On 2006-11-09, Grant Edwards <[email protected]> wrote:
> I just did a bit of benchmarking, and the new binary is 30X
> slower. Loading my 14K program into flash with the old binary
> took 22 seconds (5500bps). With the new one, it takes 522
> seconds (223bps) -- that's almost 9 minutes.
Increasing the download packet size helps. Now the new
gdbproxy is only 3X slower than the old one.
Why the 1s polling period on download packets in the new
gdbproxy?
It's got to be busy-waiting, since it's sucking up 100% of a
1.8GHz CPU while only sending 1 packet of 39 each second.
The old binary obviously sends a new download packet as soon as
the previous one is ACKed, but the new one appears to wait
until the next 1-second tick to send the next packet. That
imposes an average overahd of 500ms per packet. No matter how
big the packets are, that's going to add up fast.
It wouldn't be so bad if it was sleeping for 1 second at a
time, but it's not -- it's burning an entire second of CPU time
doing nothing.
--
Grant Edwards grante Yow! They
at collapsed... like nuns
visi.com in the street... they had
no teenappeal!