结果:
used time:53574684
used time:1800077620
used time:12563690
可见MappedByteBuffer读写数据是最快的, 其次是FileChannel, 再其次就是RandomAccessFile.
public class BufferedCache {

/**
  * @param args
  * @throws IOException
  */
public static void main(String[] args) throws IOException {
  test3();
  test2();
  test1();
}

public static void test1() throws IOException {
  long start = System.nanoTime();
  FileChannel fc = new RandomAccessFile("/tmp/test.tmp", "rw").getChannel();
  MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 8);

for (int i = 0; i < 100000; i++) {
   mbb.putLong(0, i);
  }
  long end = System.nanoTime();
  System.out.println("used time:" + (end - start));
  fc.close();

}

public static void test2() throws IOException {
  long start = System.nanoTime();
  RandomAccessFile raf = new RandomAccessFile("/tmp/test.tmp", "rw");
  for (int i = 0; i < 100000; i++) {
   raf.seek(0);
   raf.writeLong(i);
  }
  long end = System.nanoTime();
  System.out.println("used time:" + (end - start));
  raf.close();
}

public static void test3() throws IOException {
  long start = System.nanoTime();
  FileChannel fc = new RandomAccessFile("/tmp/test.tmp", "rw").getChannel();
  ByteBuffer buf = ByteBuffer.allocate(8);
  for (int i = 0; i < 100000; i++) {
   buf.putLong(0, i);
   fc.write(buf, 0);
  }
  long end = System.nanoTime();
  System.out.println("used time:" + (end - start));
  fc.close();

}
}

Java之nio性能比较的更多相关文章

  1. 输入和输出--java的NIO

    Java的NIO 实际开发中NIO使用到的并不多,我并不是说NIO使用情景不多,是说我自己接触的并不是很多,前面我在博客园和CSDN上转载了2篇别人写的文章,这里来大致总结下Java的NIO,大概了解 ...

  2. Java异步NIO框架Netty实现高性能高并发

    原文地址:http://blog.csdn.net/opengl_es/article/details/40979371?utm_source=tuicool&utm_medium=refer ...

  3. Java之NIO

    想要学习Java的Socket通信,首先要学习Java的IO和NIO基础,这方面可以阅读<Java NIO 系列教程>. 下面展示自己代码熟悉Java的NIO编程的笔记. 1.缓冲区(Bu ...

  4. Java 的NIO 3个主要概念 Channel、Buffer、Selector

    Java 的NIO 3个主要概念 Channel.Buffer.Selector,为何提高了性能

  5. 漫谈NIO(2)之Java的NIO

    1.前言 上章提到过Java的NIO采取的是多路IO复用模式,其衍生出来的模型就是Reactor模型.多路IO复用有两种方式,一种是select/poll,另一种是epoll.在windows系统上使 ...

  6. java学习-NIO(五)NIO学习总结以及NIO新特性介绍

    我们知道是NIO是在2002年引入到J2SE 1.4里的,很多Java开发者比如我还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2).但是对于 ...

  7. Java BIO NIO 与 AIO

    回顾 上一章我们介绍了操作系统层面的 IO 模型. 阻塞 IO 模型. 非阻塞 IO 模型. IO 复用模型. 信号驱动 IO 模型(用的不多,知道个概念就行). 异步 IO 模型. 并且介绍了 IO ...

  8. Java服务端性能优化

    <Java程序性能优化>说性能优化包含五个层次:设计调优.代码调优.JVM调优.数据库调优.操作系统调优. 常用的几个代码优化方案: 使用单例 对于IO处理.数据库连接.配置文件解析加载等 ...

  9. Java中NIO的简单介绍

    NIO基本介绍 Java NIO(New IO) 也有人称之为Java non-blocking IO 是从Java1.4版本开始引入的一个新的IO API,可以代替标准的IO API.NIO与原来的 ...

随机推荐

  1. Android 在Service里面启动Activity

    直接在代码: Intent dialogIntent = new Intent(getBaseContext(), YourActivity.class); dialogIntent.addFlags ...

  2. 【53.90】【BZOJ 3875】 [Ahoi2014]骑士游戏

    Time Limit: 30 Sec Memory Limit: 256 MB Submit: 564 Solved: 304 [Submit][Status][Discuss] Descriptio ...

  3. Android菜鸟的成长笔记(27)——SurfaceView的使用

    前面有关自定义View中进行了绘图,但View的绘图机制存在如下缺陷: 1.View缺乏双缓冲机制. 2.当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片. 3.新线程无法直接更 ...

  4. js实现计时功能

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78912786 一:计时器功能 <!DOCTYPE html> <ht ...

  5. Spark源代码阅读笔记之DiskStore

    Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持 ...

  6. [Grid Layout] Use the repeat function to efficiently write grid-template values

    We can use the repeat() function if we have repeating specifications for columns and rows. With the  ...

  7. 删除vector中的重复数据(unique)

    #include <iostream> #include <vector> #include <algorithm> #include <assert.h&g ...

  8. PHP移动互联网开发笔记(4)——自定义函数及数组

    一.自定义函数 自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return val ...

  9. Indy10 控件的使用(2)TidTCpServer组件学习

    以下来自英文原版帮助文件,文桓英语不好,翻译了老半天.有错误的地方见谅,别骂我. TIdTCPServer = class(TIdComponent) Description TIdTCPServer ...

  10. 课堂随笔04--关于string类的一些基本操作

    //定义一个空字符串 string strA = string.Empty; strA = "abcdesabcskkkkk"; //获取字符串的长度 int i = strA.L ...