JAVa程序性能优化

JAVa程序性能优化

           懂得计算机性能的都知道,性能反应慢体现为:界面停顿,抖动,反应迟钝等
性能的表现有:

  1.          执行速度:程序是否迅速,响应时间是否够短
  2.         内存分配:内存分配是否合理,是否过多的消耗内存或者存在泄漏
  3.         启动时间:程序从运行可以正常的处理业务需要花费多长时间
  4.         负载承受能力:当系统压力上升时,系统的执行速度,响应速度的上升曲线是否平缓

性能的参考指标有:

  •         执行时间:一段代码从开始到结束,所用的时间
  •         CPU时间:函数或者线程CPU的时间
  •         内存分配:程序运行时所占用的内存空间
  •         磁盘吞吐量:描述I/O的使用情况
  •         网络吞吐量:描述网络使用情况
  •         响应时间:系统对某用户行为或者事件作出的响应时间。响应时间越短,性能越好木桶原理与性能瓶颈

            又称短板理论,其核心思想:一个木桶水的多少,并不取决于桶壁最高的木块,而取决与最短的木块,即使有充足的内存和CPU的前提下,如果I/O磁盘低下,那么系统总体会运行很慢,只有提高磁盘I/O性能才能对系统整体性能进行优化,因此磁盘的I/O就是系统的性能瓶颈
  注意:系统的好坏最终取决于最差的组件,必须对其进行优化,而不是对系统表现最好的组件
最优可能成为系统瓶颈的计算机资源:

  •              磁盘I/O:由于磁盘I/O读写速度比内存慢,如果等磁盘完成I/O完成,那么低效的I/O会拖累整个系统
  •              CPU:对计算机要求高的计算机应用,由于占用时间,不断大量的占用CPU资源,那么对CPU争夺导致性能问题
  •              异常:对JAVA应用来讲,异常捕获和处理是非常消耗资源的,程序高平率进行异常处理
  •              数据库:大部分应用程序离不开数据库,海量数据库读写操作可能费时
  •             锁竞争:对于高并发的程序来说,如果存在激烈竞争,锁竞争会增加线程切换开销
  •             内存:一般来说,只要应用程序设计合理,内存读写速度上不太可能成为性能瓶颈。除非应用提高了内存交换和扫描
  • Amdanhl定律

 


           它定义了串行系统并行后加速比的设计公式和理论上限
          加速比定义:加速比=优化前系统消耗时/优化系统消耗时
           加速比:优化前耗时与优化后耗时比值。加速比越高,优化越明显
二、性能调优层次,
              除了可以从软件架构,JVM 虚拟机层,数据库以及操作系统层面通过进行调优,进而提升性能,设计调优处于调优上层,往往需要软件开发进行之前,由于软件开发设计和架构对软件整体质量有决定因素,设计调优对性能也是最大的。
设计优化最大特点可以规避某一组件,而非改良组件实现。因此开发人员必须监测频率和资源消耗间取衡

 

代码调优 

               需要熟悉相关语言的API,并正确使用API 或类库,对算法结构灵活使用 LikeList和ArrayList随机访问性能,同样的文件读写实现,使用Stream方式与JAVA NIO方式
JVM调优
                对JVM虚拟机进行优化有一定程度的上升JAVA性能。JVM各项参数会直接影响性能。JVM堆大小,垃圾回收机制策略
数据库调优
                可以使用JDBC的方式连接数据库,调优分为3部分
                应用层对SQL语句进行优化
                对数据库进行优化
                对数据库软件进行优化
                优化数据库访问层,使用JDBC进行查询,对大量SQL查询,可以使用preparestatement代替statement,以提高数据库查询数据效率:select语句显查询列名,避免用*
                数据库进行优化时,主要目的是建立一个具有良好的表结构数据库,例如:用多表级联合查询效率可以合理冗余字段 ,对于大表使用水平切割或者类似ORCal分区表技术,为了提高数据库查询效率,可以建立合理索引

 

posted @ 2018-06-05 12:21  小书虫源  阅读(150)  评论(0编辑  收藏  举报