Bootloader self-program - AVR109 speed test avrdude - Advanced AVR 3.0 Core - 1Mbps with 8MHz CPU
1Mbps with 8MHz CPU
4441 bytes/second write
7772 bytes/second Read
Tested with original code; 4.4kb/s is not bad considering the USBasp tested at 1.3kb/s, but this can be improved, so 4.4kb/s is the base line to improve upon.
Technically, maximum transfer speed with UART running at 1Mbps is 1000000/(8+2)=100000 bytes per second or 100kb/s; but maximum time to write to one page of flash is about 3.7ms + 3.7ms, or 64/(0.0037+0.0037)=8648 bytes per second, and this maximize speed can't not be increased, since the flash is using a 128kHz fixed watchdog timer, so able to get 80% of the maximum write speed of 8648*0.8=6918 bytes/second is good enough. Since the maximize flash time could be 4.5ms or 64/(0.0045+0.0045)=7111; so 7kb/s is the objective, and it can should be easily achievable.
The read time on the other hand, is extremely slow because reading doesn't have a hardware limitation, so technically read speed can be very fast or at least 80kb/s;