zoukankan      html  css  js  c++  java
  • NIO VS IO

    NIO 主要是用在服务端 处理高并发的情况下,用少量的线程处理很多个并发请求,它的优势在服务端、高并发,并且也是基于IO的,相当于封装了一层IO

    IO主要用在客户端 处理单一链路,因为同一个socket在处理read和write是不阻塞的,但是同时read或者write都是阻塞的,这导致只能同时一个线程处理read和write

    如果基于NIO开发客户端,那么不能体现NIO的优势,一方面封装了IO,反而会下降传输速度,另一方面事件的分发是基于轮训的,可能会有延迟。但是在如果客户端并发达到1千次每秒的情况下,nio可以一次性接受更多的返回,这样就比IO的要快一点,但是不会快非常多,大概也就10%的性能提升。

    下面是自己做的一个测试:

     

    Io

     

     

     

    线程

    每线程请求次数

    耗时

    速度

    150

    2000

    99s

    3030c/s

    100

    2000

    67s

    3333c/s

    50

    2000

    31s

    3225c/s

    20

    2000

    21s

    1904c/s

    10

    2000

    12s

    1666c/s

    5

    2000

    8s

    1250c/s

    1

    2000

    5.7s

    351c/s

     

     

    Nio

     

     

     

    线程

    每线程请求次数

    耗时

    速度

    150

    2000

    93s

    3225c/s

    100

    2000

    58s

    3448c/s

    50

    2000

    30s

    3333c/s

    20

    2000

    22s

    1818c/s

    10

    2000

    12s

    1666c/s

    5

    2000

    9s

    1111c/s

    1

    2000

    6.3s

    317c/s

  • 相关阅读:
    hbase coprocessor 二级索引
    文档:ubuntu安装.pdf
    Python过滤敏感词汇
    nginx 对django项目的部署
    ZooKeeper 的常用操作方法
    Python操作reids
    教你为nginx 配置ssl 证书!
    单线程多任务异步爬虫
    go语言入门之环境的搭建
    关于csrf跨站请求伪造攻击原理,与csrftoken防范原理
  • 原文地址:https://www.cnblogs.com/sunwei2012/p/1818864.html
Copyright © 2011-2022 走看看