DataInputStream\DataOutputStream的性能

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)

现在我需要添加一些标题数据,并支持短符号.我想使用 DataInputStreamDataOutputStream避免自己将其他类型转换为字节,我想知道它们的性能是什么.

我需要使用吗?

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)

Tom*_*icz 7

你应该加入BufferedOutputStream.DataOutputStream没有实现任何缓存(这是好的:关注点的分离),并且它的性能将非常差,而不会缓存底层OutputStream.即使是最简单的方法writeInt()也可能导致四次单独的磁盘写入.

至于我只能看到write(byte[], int, int)writeUTF(String)在一个被写入数据byte[]块.其他人逐字节写原始值(如intdouble).