AVRDUDE has a little-known command line parameter, -B, which sets the bitclock, and can dramatically speed up writing/reading firmware to/from an AVR MCU when using a USBasp or USBtinyISP. For a USBasp, simply add -B0.5 to your command line parameters. Example:
avrdude -cusbasp -B0.5 -pm3280 -U flash:w:firmware.hex
In my tests, adding -B0.5 reduces the time to write & verify a hex file by about 2/3! For the USBtinyISP, add -B1 to your command line parameters. Example:
avrdude -cusbtiny -B1 -pm3280 -U flash:w:firmware.hex
The speedup is even more dramatic with the USBtinyISP. In a specific test, I found that write/verify time dropped from 59 sec to 17 sec!
You can also speed up programming from the Arduino GUI. Simply edit your boards.txt file. In older versions of Arduino, it can be found in <ArduinoFolder>/hardware/arduino/avr/boards.txt. For Arduino 1.8.x, it’s located in C:\Users\<YourUserName>\AppData\Local\Arduino15\packages\arduino\hardware\avr\<version>\boards.txt.
For the USBasp, add the -B0.5 parameter to the usbasp.program.extra_params line:
In order to realize the speed gain in programming, the USBasp must have firmware which supports the setting of SCK. If AVRDUDE gives you this warning:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
then you must update your USBasp’s firmware. Follow the instructions in my article:
How to Update the Firmware on a USBasp V2.0
For the USBtinyISP, add the -B1 parameter to the usbtinyisp.program.extra_params line:
If the Arduino GUI is already running, you must restart it in order to load the new settings.