zoukankan      html  css  js  c++  java
  • C# Socket Tcp 性能测试

    前段时间讲述了在编写一个高性能的Socket Tcp服务要注意的细节[c#编写高性能Tcp Socket应用注意事项];按那些细节描述的方法来实现一个Socket Tcp性能到底达到一个怎样的效果呢?以下是针对相关方法实现的Socket Tcp服务进行一个测试,看一下在那种方式编写的Socket Tcp达到一个怎样的性能指标。

    测试环境

    server:Core2 4300 1.8G 2G内存 win2003

    client1:Core i7 Q740 1.7G 4G内存 win 764

    client2:P4 2.4G 1G内存 WIN2003

    由于I7 Q740装的是win7 系统所以没有拿来做服务器端。Core2 4300 虽然是4-5年前的cpu,用来做服务端测试还是足够的。

    测试逻辑

    发送一个简单的对象

                User user = new User();
                user.Name = "henryfan";
                user.City = "GuangZahou";
                user.EMail = "smarkhenry@live.com";
                user.BrithDate = new DateTime(1900, 1, 1);

    client1和client2各自启两个client程序,每个client开启1000个连接,每个连接每秒大概发送4个对象。

    服务端接收数据后进行分包,读取缓中数据还原对象,然后再把对象写入缓冲区发送回去。

    测试结果

    服务端接入4K个连接,每秒接收1.6W个对象和回发1.6w个对象。内存占用300多m(实际占用并没有这么多,程序开启了1W个连接的缓冲区),cpu大概30%多的使用率。

    服务端情况

    Client情况

    服务端性能分析

    以上分析一个调度器的线程处理情况,从使用情况来看,对象写入缓冲所损耗的可以乎略不计,SendAsync占用了最多的资源。因此合理的使用SendAsync和ReceiveAsync是很有必要的。以上测试结果相信能让编写的这方面应用的朋友对c# Socket性能有个初步的了解

    下载相关程序

    BeetleTest.rar (930.62 kb)

    访问Beetlex的Github
  • 相关阅读:
    1334: 好老师
    poj 2255 Tree Recovery
    2006浙大:简单计算器
    POJ1001(C++处理大数)
    HDU2159(二维完全背包)
    POJ2080:Calendar(计算日期)
    2008上交:Day of Week
    POJ1365:质因数分解
    VIJOS:P1706(舞会)
    POJ2449:K短路
  • 原文地址:https://www.cnblogs.com/smark/p/2256793.html
Copyright © 2011-2022 走看看