性能优化的方方面面

编写高效优雅安全Java程序的常见原则

面向对象

  • 构造器参数太多的情况下选择合适的数据类型代替

  • 不需要实例化的类应该构造器私有化

  • 不要创建不必要的对象

  • 避免使用终结方法

  • 使类和成员的可访问性最小化

  • 使可变性最小化

  • 优先使用复合

  • 接口优于抽象类

     

方法

  • 可变参数要谨慎使用

  • 返回零长度的数组或集合, 不要返回null

  • 优先使用标准的异常

 

通用程序设计

  • 用枚举代替int常量

  • 将局部变量的作用域最小化

  • 精确计算,避免使用float和double

  • 当心字符串连接的性能

  • 控制方法的大小

 

深入了解性能优化

影响一个系统性能的方方面面

 

常用的性能评价、测试指标

  • 响应时间

    提交请求和返回该请求的响应之间使用的时间,一般比较关注平均响应时间。

    如:数据库查询话费的时间,将字符回显到终端上话费的时间,访问Web页面话费的时间;

  • 并发数

    指同一时刻:对服务器有实际交互的请求数。和网站在线用户数的关联。

  • 吞吐量

    对单位时间内完成的工作量(请求)的量度.

    如:每分钟的数据库事务,每秒传送的文件千字节数,每分钟的Web服务器命中数。

  • 关系

    通常,平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越小。但是,系统吞吐量越大,未必平均响应时间越短。

 

常用的性能优化手段

总原则:避免过早优化,进行系统性能测试,寻找系统瓶颈,分而治之,逐步优化。

 

前端优化

  1. 浏览器:减少请求数,使用客户端缓存,启用压缩,资源文件加载顺序,减少Cookie传输。

  2. CDN加速

  3. 反向代理缓存

  4. Web组件分离

 

应用服务性能优化

缓存

网站性能优化第一定律:优先考虑使用缓存优化性能

集群

异步

Servlet异步,多线程,消息队列

程序

代码级别

  • 选择合适的数据结构

  • 选择更优的算法

  • 编写更少的代码

  • 参见《编写高效优雅Java代码》

并发编程

  • 充分利用CPU多核,尽量使用线程池,合理设置线程数量,尽量使用JDK提供的各种并发框架和工具

  • 实现线程安全的类,避免线程安全问题

  • 同步下减少锁的竞争(缩小锁的范围,减少锁的粒度。替换独占锁,读写锁,CAS代替锁,ThreadLocal等等。)

资源复用

  • 减少开销很大的系统资源的创建和销毁(单例模式,池化技术)

JVM

  • 与JIT编译器相关的优化

  • GC调优

存储性能优化

  • 尽量使用SSD

  • 定时清理数据或者按数据的性质分开存放

  • 结果集处理

 

标题:性能优化的方方面面

地址:http://blog.ivan.group/article/22

文章转载自:Ivan | 晏飞个人博客 [http://blog.ivan.group]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值