Различия имеют две стороны, концептуально и практически. Многие документы, касающиеся производительности, относятся к 90-м годам, когда мощность процессора была значительно выше скорости сети, а сетевые адаптеры были довольно простыми.
Учтите, что технически UDP может быть быстрее из-за меньших издержек, но современное оборудование недостаточно быстрое, чтобы насытить даже 1 гигабитный канал с наименьшим размером пакета. TCP в значительной степени ускоряется любой картой - от контрольной суммы до сегментации и до полной разгрузки.
Используйте UDP, когда вам нужна многоадресная передача, то есть рассылка, чтобы сказать больше, чем сказать несколько получателей. Используйте UDP, когда управление окнами и управление перегрузкой TCP не оптимизированы, например, высокоскоростные каналы глобальной сети с высокой задержкой: см., Например, ускорители UDT и WAN.
Найдите любую документацию по производительности для 10 сетевых адаптеров GigE. Основная проблема заключается в том, что аппаратное обеспечение недостаточно быстрое для насыщения сетевой карты, поэтому многие поставщики обеспечивают полную разгрузку стека TCP / IP. Также рассмотрите файловые серверы, такие как NetApp и др., Если используется программное обеспечение, вы можете увидеть настройку MTU для увеличения размеров, чтобы уменьшить нагрузку на процессор. Это популярно для низкоуровневого оборудования, такого как устройства SOHO NAS от ReadyNAS, Synology и т. Д. С высокопроизводительным оборудованием, если вы разгрузите весь стек, то, если аппаратное обеспечение будет способно, можно добиться лучшей задержки с нормальными размерами Ethernet MTU, и Jumbograms становятся устарели.
iperf
в значительной степени является инструментом для тестирования сети, но он не всегда будет лучшим на платформах Windows. Вам нужно взглянуть на собственный инструмент Microsoft NTttcp:
http://msdn.microsoft.com/en-us/windows/hardware/gg463264.aspx
Обратите внимание, что эти инструменты больше относятся к тестированию сети, а не производительности приложений. Инструмент Microsoft доходит до крайности с большим буфером памяти, стоящим в очереди, ожидая, что сетевой адаптер отправит как можно быстрее, без интерактивности. Инструмент также включает в себя сеанс разогрева, чтобы убедиться, что в течение тестового периода не требуется malloc.