I think there is no way to give you benchmarks of TCP vs UDP because it all depends on implementation !?
If you have any idea of the difference between those two protocols, you should know. If not, here is a brief summary:
TCP: + Congestion control
+ Traffic shaping
+ Reliable transfers
Gives you reliable transfers, only error-free segments pass and itwaits for any lost segment to be re-sent before it takes any other segment.
UDP: + Throw and cath, Checksum to see errors
Detects small errors with the checksum (read about checksum, odd/even bit sums can be manupulated enough to still seem right). Doesn齮 care at all about congestion or traffic shaping (or is it the same? forgot).
Anyhow, basically, with TCP you dont have to worry about anything, with UDP you have to worry about anything you want. For games or streaming media you may prefer UDP because it doesnt wait for lost segments. For file transfers TCP is the only way to go. Btw a friend uses TCP for his game and predicts all movement and clients only send any changes to the movement, seems to work ok.
As you see, benchmarking this is not that easy, you could write our own protocol with the same functions as TCP using UDP, perhaps skipping congestion control, and then you have to keep in mind that different software needs to send a different amount of data.
That齭 it, I think :)
Both TCP and UDP uses IP packets, so they will both have the same minimum latency. However, TCP is designed for latency insensitive, bulk transfer applications, while UDP is just a thin wrapper on top of the IP packet itself.
For latency sensitive applications (ie, most games) needing to communicate across the Internet, UDP is the only choice. A medium amount of packetloss can cause intermittent TCP latency up to several seconds.
Of course, using UDP is much harder. TCP gives you a reliable bytestream, while UDP will just give you each packet as it arrives, in no particular order. So you must handle packet loss yourself, say by implementing a reliable protocol on top of UDP or perchance by sending redundant data in each packet.
Commonly, a mix is used - UDP for latency sensitive data, TCP for non-latancy sensitive data (like chat, for example).