java系统性能优化手册PPT课件
- 格式:pptx
- 大小:179.37 KB
- 文档页数:10
1.底层篇1.1.基本数据类型时间分析int的运算速度最快,short次之,byte再次之,long再次之。
float和double运算速度最慢。
除法比乘法慢的太多,基本上除法是乘法的9倍时间。
当然,除了浮点型外。
根据intel cpu的参考数据,乘法计算时间是移位运算的4-5倍是比较正常的。
long类型的计算很慢,建议一般少使用它。
double运算速度和float相当;浮点的乘法比除法要慢。
但是,这个结果并不能真正说明问题。
这个结果只是一个一般性的,在特殊情况下,乘法还是比除法快,比如:floatA * floatB 仍然是比floatA / (1/floatB)快。
从实际的数据结果来讲,乘法的时候,乘数越小速度越快,特别是在乘数比3小的时候,乘法时耗接近20,大于4的时候,几乎都是600的时耗。
除法恰好相反,除数大于1的时候,时耗一般都是350,可是,当除数小于1的时候,时耗就变成了700了。
对于大家关心的移位和乘除2的问题,jdk5.0已经做了部分处理。
即“var *=2”和“var <<=1”耗费一样。
但是,除法并没有进行这类处理,即“var /= 2”耗费和基本的除法一样。
1.2.类和接口调用时间分析1.2.1.类的创建虽然面向对象思想已经深入人心,但他在带来快捷方面的编程风格的时候,也带来了低下的效率。
在Java中,反应最快的是Object类(这也是显然的),建立一个新的Object类时耗仅仅为20单位。
而一个空类(即没有声明任何Methods和Fields)的建立时间则增加到了惊人的400单位。
如果再给类增加一些字段的话,时间耗费并没有特别大的增加,每增加一个int类型字段大概增加30个单位。
仅仅就创建时间来说,内嵌的类型都有不错的表现。
比如,创建一个int数组(仅仅包含一个元素)的时间只比创建一个Object对象的时间多一倍。
当然,如果你创建的数组对象包含1000个元素的话,其创建时间显然还会加上内存管理的时间了,它的时间大概是1万个时间单位。
Java程序性能优化——让你的java程序更快、更稳定1、Java性能调优概述 1.1、Web服务器,响应时间、吞吐量是两个重要的性能参数。
1.2、程序性能的⼏个表现:执⾏速度:程序的反映是否迅速,响应时间是否⾜够短内存分配:分配是否合理,是否过多地消耗内存或泄露启动时间:程序从运⾏到可以正常处理业务需要花费多长时间负载承受能⼒:当系统压⼒上升时,系统的执⾏速度、响应时间的上升曲线是否平缓 1.3、⽊桶原理与性能瓶颈 根据⽊桶原理,系统的最终性能取决于系统中性能表现最差的组件。
有可能成为系统瓶颈的计算资源: 磁盘I/O: ⽹络操作: CPU: 异常: 数据库: 锁竞争: 内存: 1.4、Amdahl定律 加速⽐=优化前系统耗时/优化后系统耗时 设加速⽐为Speedup,必须串⾏化的程序⽐重为F,CPU处理器数量为N,则有: 为了提⾼系统的速度,仅增加CPU处理器的数量并不⼀定能起到有效的作⽤,需要从根本上修改程序的串⾏⾏为,提⾼系统内可并⾏化的模块⽐重,在此基础上,合理增加并⾏处理器数量,才能以最⼩的投⼊,得到最⼤的加速⽐。
1.5 性能调优的层次 设计调优:软件开发之前;所有调优⼿段的最上层,对软件整体质量有决定性的影响。
可以规避某⼀个组件的性能问题,⽽⾮改良该组件的实现。
(需要熟悉:常⽤软件设计⽅法、设计模式、基本性能组件、常⽤优化思想) 代码调优:开发过程中或开发完成后;从微观上对性能的调整,是产⽣最直接影响的优化⽅法。
熟悉相关的API,对算法、数据结构的灵活使⽤。
JVM调优:开发后期;对JVM的运⾏原理和基本内存结构有⼀定了解,然后根据程序特点,设置合理的JVM启动参数。
数据库调优:分为3个部分 应⽤层对SQL语句优化:编程技巧,指定列名避免使⽤*、使⽤PreparedStatement代替Statement等 数据库进⾏优化:冗余字段、⽔平切割、索引等 数据库软件进⾏优化:以Oracle为例,合理的共享池、缓存缓冲区或者PGA等 操作系统调优:linux,共享内存段、共享内存最⼤值、最⼩值、虚拟内存⼤⼩、磁盘的块⼤⼩等;wiindows,虚拟内存等 1.6基本调优策略和⼿段 优化的⼀般步骤:⾸先明确性能⽬标,指出优化的对象和最终⽬的。