Java IO Performance

本文详细介绍了Java中的I/O及NIO概念和技术。包括传统I/O API的使用,如从文本文件和二进制文件中读写数据。重点介绍了NIO(New I/O)的概念及其如何通过使用Buffer和Channels等组件显著提升I/O性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.    I/O of software system

输入是系统接收的信号或数据,输出是从其发送的信号或数据。

I/O设备是人(或其他系统)用来与计算机通信的硬件.


以下为内存的层次结构:



I/O of software system:


二.    Java I/O APIs

java.io in JDK:




Reading/Writing from/to text files:


Reading/writing from/to bin files:



三.    Java nio APIs

在软件系统中,I/O的读写速度比内存慢.大多数情况下的I/O 读写会成为系统的平静,限制系统的效率.提高I/O速度对于提高系统的整体性能具有很大的帮助.于是,便有了NIO(New I/O).

1.Using Buffer to speed up I/O

Buffer是什么: Buffer是物理存储器的一个区域,用于在数据从一个地方移动到另一个地方时临时存储数据.大多数Buffer都是用软件实现的,由于与硬盘驱动器相比,访问时间更快,因此通常使用更快的RAM来存储临时数据/

不使用Buffer进行写测试:


测试结果:

使用Buffer进行写测试:


测试结果:

使用Buffer提高读性能:


通过以上测试可以看出,在使用了Buffer后,写时间大大下降,从88ms减少到32ms.

由此可见,使用Buffer可以显著提高I/O性能.

2.Channels

什么是Channels:Channels是java.nio中的一个新的抽象概念,它被定义在java.nio.channels包中. Channels是一个用来在打开的file或socket上执行I/O操作以及若干控制操作的handle.java.nio将channel与RandomAccessFile, FileInputStream,FileOutputStream, Socket, ServerSocket or DatagramSocket相联系.

使用Channels:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值