Java程序性能优化-缓冲(Buffer)(1)

如题所述

第1个回答  2022-10-18

     常用优化组件和方法

  本节主要介绍可用于系统性能优化的组件和性能优化思想 重点介绍缓冲和缓存这两个组件以及它们的使用方法 此外 还将介绍几种常用的优化思想 如池化对象 并行代替串行 负载均衡 以及时间换空间和空间换时间

     缓冲(Buffer)( )

  缓冲区是一块特定的内存区域 开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异 提高系统的性能 在日常生活中 缓冲的一个典型应用是漏斗 如图 所示

  图   缓冲的示意图

  图 显示了漏斗作为缓冲区的使用场景 上层系统如茶壶 下层系统如水瓶 现需要将茶壶中的水倒入水瓶中 这就有如将内存中的数据写入硬盘中一样 茶壶的出水速度可以很快 但是水瓶的瓶口很细 因此形成性能瓶颈 要将水全部倒入瓶中 必须等待瓶口的水缓缓流下 为了加快速度 可以使用一个漏斗(缓冲)

  漏斗的初始口径很大 并且拥有一定的容量 因此 茶壶中的水可以先倒入漏斗中 就有如内存数据先写入一块缓冲区 只要漏斗的容量够大 茶壶里的水很快就能倒完 至此 上层系统完成工作 可以去处理其他业务逻辑 而此时 水并未完全进入瓶中 而大部分被积累在漏斗中 这就可以由下层系统慢慢处理 直到水完全进入瓶中 漏斗(缓冲区)被清空

  注意 缓冲可以协调上层组件和下层组件的性能差 当上层组件性能优于下层组件时 可以有效减少上层组件对下层组件的等待时间

  基于这样的结构 上层应用组件不需要等待下层组件真实地接受全部数据 即可返回操作 加快了上层组件的处理速度 从而提升系统整体性能

  缓冲最常用的场景就是提高I/O的速度 为此 JDK内不少I/O组件都提供了缓冲功能 比如 当使用FileWriter时 进行文件写操作的代码如下

  Writer writer = new FileWriter(new File( file txt ))

  long begin=System currentTimeMillis()

  for (int i = ; i < CIRCLE; i++) {

  writer write(i)                                     //写入文件

  }

  writer close()

  System out println( testFileWriter spend: +(System currentTimeMillis() begin))

  为进行I/O优化 可以为FileWriter加上缓冲

  Writer writer = new BufferedWriter(new FileWriter(new File( file txt )))                                                        //增加了缓冲

  long begin=System currentTimeMillis()

  for (int i = ; i < CIRCLE; i++) {

  writer write(i)

  }

  writer close()

  System out println( testFileWriterBuffer spend: +(System currentTimeMillis() begin))

  以上代码使用BufferedWriter为FileWriter对象增加缓冲功能 BufferedWriter对象拥有两个构造函数

  public BufferedWriter(Writer out)

  public BufferedWriter(Writer out int sz)

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

   编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

  Visual C++音频/视频技术开发与实战

  Oracle索引技术

lishixinzhi/Article/program/Java/gj/201311/27807

相似回答
大家正在搜