在CodePlex有个很不错的关于WCF的性能测试,WCF Latency Test Harness, 针对不同的请求区域(直接访问、同一应用程序域、同一程序、同一主机(跨进程)、不同主机),不同的binding(netNamedPipe,netTcp,netMsmq,basicHttp,wsHttp,Remoting) ,不同的序列化方式,不同的请求数据量、不同请求方式的测试,测试的内容可以通过配置文件设置。
测试的指标是latency,在MSDN有关于吞吐量(throughput)的测试:A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies。
同一应用程序域,请求实例为单例模式,双向传输,默认的序列化方式(DataContractSerializer),使用nullTransport(自定义方式)、命名管道、NetTcpBinding、BasicHttpBinding:
同一应用程序域,请求实例为单例模式,单向传输,默认的序列化方式(DataContractSerializer),使用nullTransport(自定义方式)、命名管道、NetTcpBinding、BasicHttpBinding:
同一应用程序域,请求实例为单例模式,单向传输,序列化方式为NetDataContractSerializer,使用nullTransport(自定义方式)、命名管道、NetTcpBinding、BasicHttpBinding:
同一应用程序域,请求实例为单例模式,单向传输,序列化方式为PreserveObjectReferencesDataContractSerializer,使用nullTransport(自定义方式)、命名管道、NetTcpBinding、BasicHttpBinding:
同一应用程序域,请求实例为单例模式,单向传输,序列化方式为XmlSerializer,使用nullTransport(自定义方式)、命名管道、NetTcpBinding、BasicHttpBinding:
BasicHttpBinding和WSHttpBinding的性能相当;在大数据量的情况下,nullTransport,netNamedPipe和netMsmq的性能相当。
不同传输方式和编码方式:
netTcpBinding的CPU的使用情况:
basicHttpBinding的CPU使用情况:
详细内容请看:WCF Latency Test Harness and WCF Performance
http://www.cnblogs.com/zhaozhan/archive/2010/08/24/1807689.html