阅读Java思维第4版.我对I/O操作性能有一些疑问:我已经读过,最好在BufferedInputStream中"包装"InputStream对象,但在我看来,我看不出有任何区别.是不是已经缓存了文件操作?文件缓冲写的优点是什么?
系统的IO缓冲与Buffered*putStream的级别不同.
每次调用都会FileOutputStream.write(...)引发本机方法调用(通常比java内部调用更昂贵),然后上下文切换到OS'内核来进行实际写入.即使内核(或文件系统驱动程序或硬盘控制器或硬盘本身)正在进行更多缓冲,也会发生这些成本.
通过在此周围包装BufferedOutputStream,我们将更少地调用本机写入方法,从而允许更高的吞吐量.
(同样适用于其他类型的IO,当然,我只是以FileOutputStream为例.)
是不是已经缓存了文件操作?
也许,也许不是 - 取决于操作系统,使用的HD,访问方式(例如,读取大的连续块与随机访问整个地方的小块)等等.在最坏的情况下,添加BufferedInputStream可能不会造成伤害表现明显.在最好的情况下,它可以通过大小改进它(用一个大的读/写代替许多小文件访问).
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |