• 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

  • 相关阅读:
    【leetcode】N叉树的前序遍历
    【leetcode】第 N 个泰波那契数
    【leetcode】下一个更大元素 I
    【leetcode】Nim 游戏
    【leetcode】非递减数列
    053-208
    053-211
    053-56
    053-53
    053-236
  • 原文地址:https://www.cnblogs.com/sunwei2012/p/1818864.html
Copyright © 2020-2023  润新知