I have written some code that bufferes serial writes while the previous package is
being transmitted. For a quick succesion of fairly small writes this can boost
USB serial throughput from about 1.2Mb/s to 4.8Mb/s when writing to and displaing data in a serial console on a Mac.
https://github.com/mlu/libmaple/blob/master/libmaple/usb/stm32f1/usb_cdcacm.c
It has been tested and seems stable so far.
Regards
Magnus