Effect of the Network Card

On an Ethernet network, Windows NT 3.5 TCP/IP Windows Sockets application running on a 486/33 with a fast network card can saturate the wire (>1100KB/sec) using approximately 45% of the system CPU. However, with a slow network card, the same system and application may achieve only 500KB/sec while using 100% of the CPU.

Why the difference? Slower network cards, including all 8-bit and most 16-bit cards, cause the CPU to do additional buffer copies and put the CPU into numerous wait states where the CPU is just spinning, waiting for the card to do something. However, the fast network cards, which are typically 32-bit bus mastering EISA or PCI cards, do not impose these CPU costs, instead handling themselves many of the chores required to send and receive data.

Since a developer cannot control the network cards that will be in use by end users, it is usually best to do performance testing with faster network cards where the CPU or physical network, not the card itself , is the bottleneck. When the card is the bottleneck, it can mask significant performance problems and large improvements in the CPU utilization of the application may have a negligible effect. With a fast card, however, the bottleneck will usually be the application itself, so performance problems and improvements show quickly.