在一个局域网中(4网卡绑定4G网络)测试, Mina大概是20~25M/s
而直接写Socket,通讯速度有100~150M/s.
差距有这么大吗?
还是我的mina程序写的有问题?

解决方案 »

  1.   

    没有什么可比性
    实现机制不一样
    如果你测试的单一数据流的传送,那用MINA就根本没有意义
      

  2.   

    MINA将NIO需要考虑的很多复杂东西都封装好了,便于使用
      

  3.   


    没目前的情况是, 单连接 大数据. Mina竟然还没有直接写到Socket快!!!
      

  4.   

    你这不是在说废话嘛...
    MINA本身就不是用来处理单链路数据的,人家是NIO框架
    单链路数据传送用MINA干嘛...没事找麻烦嘛...
      

  5.   


    其实, 这个和mina没有什么很大的关系,和Nio也没有什么太大的关系.
    可能是我没交代清楚.
    在项目中的字符流传输是非定长字符串([命令头:int][类型:int][内容长度:int][内容:String]),由于内容长度不固定,读取一条命令, 命令头in.read(4);类型in.read(4);内容长度in.read(4),内容in.read(n) 备注:一个命令长度一般是在200~300个字节; 而在做性能比较的时候, 是采取in.read(1024)后直接丢弃; 两者没有可比性. 一个是进行4次read读取300+个字节, 一个是进行1次read读取1024个字节, 当然后者速度会比较快. 个人觉得和NIO以及Mina的性能无关!如有不对,欢迎大家继续拍砖指正!!!
      

  6.   

    还不明白...完全两种不同的逻辑思路...
    MINA在于线程池和API抽象,在于他的链路复用
    MINA不是给你用来做高速传输用的...以你这个应用来说,动用MINA根本毫无意义,直接SOCKET流读取不管是流程还是逻辑都要简单的多...包括你很纠结的速度...
      

  7.   


    通过这次测试, 也明白了Mina的性能偏向. Mina在这边也是做的高并发, 只是目前的测试是单节点的, 以后会部署多节点..感谢搂上,不厌其烦的指导~ 小弟分不多. 别见怪~~