Архитектура Windows для сокетов, кажется, препятствует хорошей производительности UDP из-за многократного копирования буферов пакетов из ядра через обработчики протоколов в приложение. MSDN, похоже, предпочитает указывать разработчикам ядро Winsock (WSK), заменяя прежний интерфейс драйвера транспорта (TDI), если они хотят разумной производительности дейтаграмм, такой как реализация надежного протокола UDP.
Однако это могут быть не звездные драйверы Windows для вашего сетевого адаптера, поскольку я вижу отличную производительность в Linux с оборудованием Broadcom, но менее 25% производительности в Windows. Отчасти это я вижу из-за отсутствия объединения прерываний передачи, мониторинг производительности Windows всегда сообщает 0 объединений для передач, но переменный диапазон для приема. В Linux я могу настроить объединение и увидеть четкие изменения производительности. По-видимому, программное обеспечение драйвера от Broadcom поддерживает объединение передачи в более поздних выпусках оборудования.
Объединение означает, что пакеты отправляются пакетами в сетевую карту и из нее, пакетные пакеты обычно означают более низкую загрузку ЦП и меньшую вероятность сброса из-за полных буферов или другой системной активности.
Таким образом, хотя менять операционную систему нецелесообразно, вы можете попробовать другое оборудование, чтобы минимизировать влияние ограниченных драйверов.