none
我的测试发现.net remoting的速度是WCF的2.5倍。是我哪里做得不公平吗? RRS feed

  • 问题

  • 我按照我实际项目的需求,抽取其网络通讯的部分,用.NET远程处理和WCF分别实现,然后测量所耗时间,以此判断两者的性能。

    测试配置

    WCF和.NET远程处理都用tcp信道,信道不加密,不使用app.config文件。都是用release编译,不优化。

    测试中,客户端向服务端获取进入条件,然后申请进入服务端。服务端收到客户端进入申请后,检查客户端的密码和身份资料,然后让它进入。序列图如下。Profile包括一幅139KB的图片。

    测量方法

    上面所述的过程在程序中进行20次。我编写了一个批处理文件,令程序每隔30秒运行一次,共运行8次。所以上述过程一共执行20×8=160次。

    客户端程序一共启动8次,而服务端程序只启动一次。(为先后8个客户端服务。)

    进行三组测试。第一次客户端、服务端在一台机器上,访问、监听localhost;第二次客户端、服务端在一台机器上,访问、监听本机的真正IP地址;第三次分机测试。

    所得数据

    

      WCF .NET远程处理 WCF .NET远程处理 WCF .NET远程处理
    参数 ip port path (本机) localhost port path
    分机调用
      288 109 280 1131 2972 791
      1116 92 1103 1136 1133 591
      348 110 864 1118 1366 606
      852 109 822 1155 1217 580
      859 109 899 1130 1183 591
      857 110 837 1149 1295 581
      866 87 856 1115 1323 502
      829 88 832 1127 1463 560
    平均 751.88 101.75 811.63 1132.63 1494.00 600.25
    标准差 283.45 10.66 233.31 13.87 606.45 83.36



    结论

    只要不使用localhost,.NET远程处理的效率就约是WCF的2.5倍。此结论与Marcin Celej测出的结论相似。

    而不是msdn.microsoft.com说的WCF效率比.NET远程处理高25%,微软论坛上用户测出的“差不多”。

    测试代码在这里下载,各位大侠能不能帮我看下,测试中是不是有哪里做得不公平?




    2012年2月9日 3:18

全部回复