There is a good Test on the Performance of WCF in CodePlex, WCF Latency Test Harness, different binding (netNamedPipe, netTcp, netMsmq, basicHttp, wsHttp, Remoting), different serialization methods, different request data volumes, different request methods for testing, the test content can be set through the configuration file.
The test metric is latency. There is A throughput test on MSDN: A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies.
For the same application domain, the request instance is in singleton mode and has two-way transmission. The default serialization mode is DataContractSerializer. nullTransport (custom mode), named pipe, NetTcpBinding, and BasicHttpBinding are used:
For the same application domain, the request instance is in singleton mode, one-way transmission, and the default serialization mode (DataContractSerializer), Use nullTransport (custom mode), named pipe, NetTcpBinding, BasicHttpBinding:
For the same application domain, the request instance is in singleton mode, one-way transmission, and the serialization mode isNetDataContractSerializer, Using nullTransport (custom mode), named pipe, NetTcpBinding, BasicHttpBinding:
For the same application domain, the request instance is in singleton mode, one-way transmission, and the serialization mode isPreserveObjectReferencesDataContractSerializer, Using nullTransport (custom mode), named pipe, NetTcpBinding, BasicHttpBinding:
For the same application domain, the request instance is in singleton mode, one-way transmission, and the serialization mode isXmlSerializer, Using nullTransport (custom mode), named pipe, NetTcpBinding, BasicHttpBinding:
BasicHttpBinding and WSHttpBinding have the same performance. In the case of large data volumes, nullTransport, netNamedPipe, and netMsmq have the same performance.
Different transmission and encoding modes:
CPU usage of netTcpBinding:
BasicHttpBinding CPU usage:
For details, see: WCF Latency Test Harness and WCF Performance