Sending unnecessary flush commands is bad for performance, since it wipes the entire work queue inside the device. For typical bitcoin mining, the device works fine without flush, as it will automatically flush when a new block is detected. Also, it is unnecessary to send target or maxroll repeatedly. They only need to be send again when they're changed.
Also, a low maxroll value is also bad for performance. For instance, with maxroll = 0, a single OSM board needs about 11-12 work items per second to keep busy. And if the boards are chained through the serial link, they could require nearly 200 work items per second. That's a lot. Setting maxroll to 60, only requires 1/60th of the workload, so about 1 work item every 5 seconds for a board.
In addition, it is good to send the pool difficulty to the board using 'target' command, to avoid unnecessary traffic going the other way.