zoukankan      html  css  js  c++  java
  • atitit.高性能遍历 文本文件行 attilax总结

    atitit.高性能遍历 文本文件行 attilax总结

    文件读写有以下几种常用的方法 1

    通常io读取2.5s 1

    nio读取或许越高的.. 2

    NIO通常采用Reactor模式,AIO通常采用Proactor模式 2

    Java对BIO、NIO、AIO的支持: 2

    BIO、NIO、AIO适用场景分析: 3

    文件读写有以下几种常用的方法

    1、字节读写(InputStream/OutputStream

    2、字符读取(FileReader/FileWriter

    3、行读取(BufferedReader/BufferedWriter

    文件大小:110m

    ::55w  

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    通常io读取2.5s

    public static void main(String[] args) {

    //SubstanceSaharaLookAndFeel

    long t1= new Date().getTime();

    filex fx=new filex();

    fx.readPerLine("e:\\ui.rar.txt""gbk"new ScannerLineFilter4mail());

    System.out.println("--f");

    //List<String> li = filex.read2list_filtEmptyNstartSpace("c:\\em.txt");

    System.out.println(new Date().getTime()-t1);

    }

    public class ScannerLineFilter4mail implements Closure {

    int n=0;

    @Override

    public Object execute(Object arg0throws Exception {

    n++;

    if(n%10000==0)

    System.out.println("-----:"+n);

     //  System.out.println(arg0);

    return null;

    }

    nio读取或许越高的..

    结果之一:NIO花费时间大概是BIO的三分之一少一点。(from site)

    NIO通常采用Reactor模式,AIO通常采用Proactor模式

    。AIO简化了程序的编写,stream的读取和写入都有OS来完成,不需要像NIO那样子遍历Selector。Windows基于IOCP实现AIO,Linux只有eppoll模拟实现了AIO。

    Java7之前的JDK只支持NIO和BIO,从7开始支持AIO。

    Java对BIO、NIO、AIO的支持

    · 

    Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

    · 

    · 

    Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

    · 

    · 

    Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

    · 

     

    BIO、NIO、AIO适用场景分析:

    · 

    BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

    · 

    · 

    NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

    · 

    · 

    AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

    · 

    Java NIO 系列教程 特约稿件 - ITeye精华.htm

    Java NIOBIO 统计文件行数性能对比 开源中国社区.htm

    BIO, NIO, AIO(转) 赵磊的博客 - ITeye技术网站.htm

    Java BIONIOAIO 学习 力量来源于赤诚的爱! - 51CTO技术博客.htm

    Java NIO 系列教程 特约稿件 - ITeye精华.htm

  • 相关阅读:
    函数表达式
    BOM
    让超出容器高度的内容滚动显示但不出现滚动条
    插件书写示例
    php中redis的安装
    日常工作bug总结
    pip freeze requirements.txt命令迁移模块
    Django18-中间件和cache实现限制用户访问频率
    Django17-文件上传下载
    Django16-cache缓存
  • 原文地址:https://www.cnblogs.com/attilax/p/15198947.html
Copyright © 2011-2022 走看看