`
baoxiaofei
  • 浏览: 31895 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用NIO中ByteBuffer.allocateDirect和ByteBuffer.allocate后性能的确不一样。

    博客分类:
  • JAVA
 
阅读更多
package com.bxf.NIOTest;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class allocateDirectTest {
public allocateDirectTest(){}

String sfin = "K:\\tmp\\FileIn.txt";
String sfou = "K:\\tmp\\FileOut.txt";
String sfou2 = "K:\\tmp\\FileOut2.txt";

public void copyFileByAllocDir() throws Exception{
FileInputStream fin = new FileInputStream(sfin);
FileChannel fcin = fin.getChannel();

FileOutputStream fout = new FileOutputStream(sfou);
FileChannel fcout = fout.getChannel();

ByteBuffer buffer = ByteBuffer.allocateDirect(1024);

long startTime = System.currentTimeMillis();
while(true){
buffer.clear();
int r = fcin.read(buffer);

if(r == -1)
break;
buffer.flip();
fcout.write(buffer);
}
long endTime = System.currentTimeMillis();
System.out.println("By copyFileByAllocDir Use time : " + (endTime - startTime));
}

// 经测试使用ByteBuffer.allocateDirect(1024)的确要比使用
// ByteBuffer.allocate(1024)快!
public void copyFileByAlloc() throws Exception{
FileInputStream fin = new FileInputStream(sfin);
FileChannel fcin = fin.getChannel();

FileOutputStream fout2 = new FileOutputStream(sfou2);
FileChannel fcout2 = fout2.getChannel();

ByteBuffer buffer = ByteBuffer.allocate(1024);
long startTime = System.currentTimeMillis();
while(true){
buffer.clear();
int r = fcin.read(buffer);

if(r == -1)
break;
buffer.flip();
fcout2.write(buffer);
}
long endTime = System.currentTimeMillis();
System.out.println("By copyFileByAlloc Use time : " + (endTime - startTime));

}
}
// 第一次测试结果:
// By copyFileByAllocDir Use time : 50
// By copyFileByAlloc Use time : 69

// 第二次测试结果:
// By copyFileByAllocDir Use time : 52
// By copyFileByAlloc Use time : 58

如果将buffer调大到:100*1024,差距就更明显了:
//By copyFileByAllocDir Use time : 3
//By copyFileByAlloc Use time : 68

//By copyFileByAllocDir Use time : 2
//By copyFileByAlloc Use time : 60
分享到:
评论

相关推荐

    xnio-nio-3.8.0.Final-API文档-中英对照版.zip

    赠送jar包:xnio-nio-3.8.0.Final.jar; 赠送原API文档:xnio-nio-3.8.0.Final-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    xnio-nio-3.8.0.Final-API文档-中文版.zip

    赠送jar包:xnio-nio-3.8.0.Final.jar; 赠送原API文档:xnio-nio-3.8.0.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.0.Final-sources...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    xnio-nio-3.8.4.Final-API文档-中英对照版.zip

    赠送jar包:xnio-nio-3.8.4.Final.jar; 赠送原API文档:xnio-nio-3.8.4.Final-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    xnio-nio-3.8.4.Final-API文档-中文版.zip

    赠送jar包:xnio-nio-3.8.4.Final.jar; 赠送原API文档:xnio-nio-3.8.4.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.4.Final-sources...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    NIO(byteBuffer)按行读取文件

    使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com

    httpcore-nio-4.3.jar包

    用Java实现非阻塞通信 ,用ServerSocket和Socket来编写服务器程序和客户程序,是Java网络编程的最基本的方式。 httpcore-nio-4.3.jar包

    Java IO, NIO and NIO.2(Apress,2015)

    Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...

    Java IO, NIO and NIO.2

    这是一本介绍java io以及nio相关知识的书,书中对知识的讲解通俗易懂,是学习java nio以及复习java io相关知识的必备书籍。注意:本书为英文版!!!

    Java IO, NIO and NIO.2 原版pdf by Friesen

    New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...

    java NIO.zip

    java NIO.zip

    基于Java NIO实现五子棋游戏.zip

    基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现...

    NIO项目源码.zip

    NIO项目源码.zip

    Apress.Pro.Java.7.NIO.2.2011

    Apress.Pro.Java.7.NIO.2.2011

    Java NIO 中文版.rar

    Java NIO 中文版.rar

    NIO 入门.chm,NIO 入门.chm

    NIO入门.chm NIO入门.chm NIO入门.chm

    httpcore-nio-4.4.13.jar

    java运行依赖jar包

    linux nio和java.zip

    linux nio和java.zip

    Pro Java 7 NIO.2.pdf

    Pro Java 7 NIO.2.pdf,2011 by Anghel Leonard

    httpcore-nio-4.4.9.jar

    httpcore-nio-4.4.9.jar

Global site tag (gtag.js) - Google Analytics