No problem, we can help you nail it down. First of all, what exact timings do you mean and how do you measure them?
Second of all, could you confirm that the WriteToFastSemihostingChannel() function is invoked when you call printf()? If yes, does calling it explicitly instead of printf() also result in slow operation?
Finally, do you get the same behavior if you throttle the printf() output (e.g. sleep for 100 msec between each call)? If not, the fast semihosting buffer might be overflowing and delaying the CPU until VisualGDB reads its contents. If this is the case, please ensure you are not using USB virtualization as it significantly reduces the semihosting performance.