BIO和NIO效率对比

最近两天在看NIO相关资料,网上一致认为NIO效率比BIO高很多,所以今天写个代码测试验证下。

从一个文本文件读取数据:189270KB,查看下两者操作时间。

上代码:

package com.whereta.file;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Vincent 创建于 2016/5/13.
 */
public class RandomAccessFileDemo {

    public static void main(String[] args) throws IOException {
        long l1 = System.currentTimeMillis();
        String filePath = "error.log";
        try (RandomAccessFile file = new RandomAccessFile(filePath, "r");
        ) {
            String s = file.readLine();
            while (s != null) {
              //  System.out.println(s);
                s = file.readLine();
            }
        }
        long l2 = System.currentTimeMillis();

        try (RandomAccessFile file = new RandomAccessFile(filePath, "r");
        ) {
            FileChannel channel = file.getChannel();
            ByteBuffer buf = ByteBuffer.allocate(1024*4);
            int length = channel.read(buf);
            while (length!=-1){
                buf.flip();
                byte[] array = buf.array();
                //System.out.println(new String(array,0,length));
                length = channel.read(buf);
            }

        }


        long l3 = System.currentTimeMillis();

        System.out.println(l2-l1);
        System.out.println(l3-l2);

    }

}

输出:

244170
211

从结果上可以看出:NIO的效率是BIO的1000倍之多。

你可能感兴趣的:(BIO和NIO效率对比)