UmN*_*obe 6 java io performance buffering
我目前正在使用缓冲流来读取写入一些文件.在我之间我做一些数学处理,其中符号是一个字节.
阅读 :
InputStream input = new FileInputStream(outputname)
input.read(byte[] b,int off,int len)
Run Code Online (Sandbox Code Playgroud)
来写 :
OutputStream output = new BufferedOutputStream(
new FileOutputStream(outputname),
OUTPUTBUFFERSIZE
)
output.write((byte)byteinsideaint);
Run Code Online (Sandbox Code Playgroud)
现在我需要添加一些标题数据,并支持短符号.我想使用 DataInputStream并DataOutputStream避免自己将其他类型转换为字节,我想知道它们的性能是什么.
我需要使用吗?
OutputStream output = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(outputname),
OUTPUTBUFFERSIZE
)
);
Run Code Online (Sandbox Code Playgroud)
保持数据缓冲的优势,或者它足以使用
OutputStream output = new DataOutputStream(
new FileOutputStream(outputname)
)
Run Code Online (Sandbox Code Playgroud)
你应该加入BufferedOutputStream.DataOutputStream没有实现任何缓存(这是好的:关注点的分离),并且它的性能将非常差,而不会缓存底层OutputStream.即使是最简单的方法writeInt()也可能导致四次单独的磁盘写入.
至于我只能看到write(byte[], int, int)和writeUTF(String)在一个被写入数据byte[]块.其他人逐字节写原始值(如int或double).