Voor zover je geen TCP afhandeling in hardware hebt, is het tegenwoordig, in vergelijking met de processor-power die je hebt, zodanig "light" dat dat totaal geen issue is. Zo gebruikt IP (en ook TCP en UDP) geen "zware" CRC's maar simpele checksums, alleen het ethernet frame heeft een CRC en die wordt sowieso altijd in hardware berekend. Het meeste werk is het heen-en-weer schuiven van de data binnen de kernel en naar de kaart, maar dat heb je met UDP net zo hard als met TCP. Veel NIC's op de PC kunnen dat zo goed als helemaal zelf, maar juist de NIC's in STBen zijn op dit punt ontzettend dom en vereisen dat dat allemaal door de processor gedaan wordt.
De reden dat veel mensen denken dat TCP bovenop UDP is geimplementeerd, is, omdat de IP-protocolstack vaak aangeduid wordt (al zolang als ik me kan herinneren) als TCP/IP. En dat slaat natuurlijk nergens op. Maarrr... UDP is wel een echt minimaal laagje op IP, het scheelt maar een paar bytes.
Voor TCP heb je vooral wat geheugen nodig voor het unacknowledged transmission window. Als je dat hebt, stelt het niks voor. Als je dat niet hebt, is het lastig. Ik heb zowel TCP als UDP op een Atmel ATmega328p gemaakt, die heeft 2 kilobyte geheugen en dat is nog niet eens genoeg (naast ander gebruik) voor een compleet ethernet frame. UDP kun je daar redelijk goed op maken, TCP gaat ook goed zolang je maar geen retransmissions nodig hebt
Wat ik wil zeggen is dat een microcontroller die op 8 Mhz draait geen problemen heeft met zowel UDP als TCP. Het is puur een beetje geheugen, iets van 16 k, wat je nodig hebt om een paar segments te kunnen bufferen. Als je dat hebt, maakt UDP en TCP nauwelijks meer uit qua performance, zelfs op 8 Mhz.
De UCB (niet de minste in dit opzicht) heeft het jaaaaaren geleden al eens uitgebreid getest en ze konden echt geen significant verschil ontdekken in performance of throughput. Sindsdien wordt aangeraden om gewoon altijd TCP te gebruiken.