I don't see how IB Controller could have any influence on this as it is neither involved in the communication between Gateway and IB's servers nor in the communication between your application and Gateway.But back to the topic, In the meantime I did couple of tests and I'm suspecting IB Controller which starts my IB Gateway. When I started IB Gateway manually, exec times were within one second from the time I sent order requests. When I kept IB Controller to start IB GW, exec times were delayed approx 4 seconds again. Could be an accident, but I personally do not think so.
I am also using IB Controller and Gateway and did a quick check of the ibgateway.log file. I don't trade at the exact same time as you though. I see that the time delay between the "Placing orderId" message and "Sending open order." message is about 10 milli seconds in my log file.
I also noticed that in your log file there is a "Updating base currency" message in between. I see those same messages very often in my log file, but not in between the messages related to placing an order.
Is your Gateway handling one application at the time of trading? Or are multiple applications connected to it?
ET] Finished processing message: