您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
如何提升Java程序性能?
性能,代码,操作如何提升Java程序性能?
发布时间:2016-12-08加入收藏来源:互联网点击:
如何提升Java程序性能?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
想要提高java程序性能,可以从下面几个方面考虑:
1、java代码尽量最优化
这点可能说得容易,做起来难。因为需要大量的编码经验和大量的编码时间总结才能达到,一个比较快的方式就是从别人的经验中汲取可用的知识,站在巨人的肩膀上。
例如:
影响Java代码性能的一些细节:Integer和 int的区别、StringBuilder和Stringbuffer的区别、ArrayList和LinkedList的区别等等太多了。
代码优化的总结:避免在循环条件中使用复杂表达式、为'Vectors' 和 'Hashtables'定义初始大小、在finally块中关闭Stream、使用'System.arraycopy ()'代替通过来循环复制数组、让访问实例内变量的getter/setter方法变成”final”、避免不需要的instanceof操作、避免不需要的造型操作、如果只是查找单个字符的话,用charAt()代替startsWith()、使用移位操作来代替'a / b'操作、在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话、不要在循环中调用synchronized(同步)方法、将try/catch块移出循环、对于boolean值,避免不必要的等式判断、对于常量字符串,用'String' 代替 'StringBuffer'、用'StringTokenizer' 代替 'indexOf()' 和'substring()'、使用条件操作符替代"if (cond) return; else return;" 结构、使用条件操作符代替"if (cond) a = b; else a = c;" 结构、不要在循环体中实例化变量、确定 StringBuffer的容量、尽可能的使用栈变量、不要总是使用取反操作符(!)、与一个接口 进行instanceof操作、使用数据库连接池和线程池、使用同步代码块替代同步方法、不要让public方法中有太多的形参、不要将数组声明为public static final、及时关闭流、及时清除不再需要的会话、公用的集合类中不使用的数据一定要及时remove掉等等还有很多。
2、进行大量的性能测试
在编码中,对于自己已知的性能问题,往往都可以避免。然而一个人很难记住所有的可能存在的问题,即潜在的bug,这个时候就需要做大量的准确的性能测试,不断的进行调优复测。
java程序往往在单独运行的时候没有问题,到了线上大批量用户访问的时候就会出现许多性能瓶颈,影响用户体验。所以在上线前进行性能测试尤为重要,而开发人员想要自己代码尽量少的测出性能问题,就需要在代码提交前,自行进行性能测试。对自己代码中,涉及到并发的地方,进行压测,模拟大量用户访问的情况,提前解决性能瓶颈。
3、进行适当的异常测试
除了要进行性能测试外,异常测试也非常重要。对于java程序而言,可能会发生许多意想不到的异常,然而当异常发生时再去处理已为时过晚,所以我们需要再代码上线前,尽量做到充分的异常测试,对于各种可能发生的异常进行模拟,提前准备对策,不打没有准备的仗。这样才能更好的保证代码的性能和质量。
回答于 2019-09-11 08:43:50
一个应用系统的性能,涉及到很多方面的因素,性能分析和调优可以写一本书。
您问的是JAVA应用程序,我简单说几句JAVA相关的(数据库性能调优这些就不在这里说了),供你参考。
首要的因素是架构,架构决定性能。如果架构设计有问题,常规的调优手段很难奏效,非得伤筋动骨,大动干戈不可。应用架构设计是个很大的话题,也有很多参考书。
其次,代码细节影响(甚至严重影响)性能。这只能靠自己,基础知识扎实,多积累编程经验,多学习一些工程得最佳实践,代码调优是最常见的解决性能问题的途径,通过基准测试,或者JVM提供的一些分析工具,找到问题,然后改进。
最后,配置影响性能。JAVA是跑在JVM里的,要掌握现代JVM的基本原理,必要的参数设置。JVM性能调优也是一个大课题,比如光是GC一块,就有不少道道。
PS:有时候,增加硬件也是一种(有效的)提升应用性能的方案。但性能并不会与硬件规模呈线性关系, 1加1肯定是小于2的。比如水平扩展,对性能的提升程度,又与软件架构相关。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |