Just to add a little more info about TCP. When TCP information is sent, it knows in what order and how much information should be received. If some information is missing ( a packet is lost during transmission ), it will re-request that bit of information again and again until it receives it. Which obviously generates more network traffic and thus can slow things down.
TCP guarantees delivery while UDP does not, so any data loss via UDP needs to be handled by the application and not the protocol.

I hope I have not muddied the waters.