java性能优化,程序员的必修课!

如题所述

Java8个优化建议必须知道

1.做必要的优化

一定要记住一个最重要的优化原则,只有发现必须做的优化,否则不要做任何标准库的替换或者进行复杂的逻辑优化。

在大多数情况下,过早的优化会占用大量时间,并使代码难以阅读和维护。更糟的是,这些优化通常不会带来任何好处,因为将花费大量时间来优化应用程序的非关键部分。

2。查找真正的瓶颈

在遵循了第一个建议并确定了需要改进的部分以后,从哪里开始呢?

可以通过如下两种方法解决这个问题:

从可疑或者可能造成问题的地方开始。·或者通过分析器找到出现瓶颈的地方。通过分析器找到问题的办法可以让你更好的理解代码的性能,同时可以专注于最关键的部分,当然如果对干性能的分析你从未试过使用分析器,那么仅仅靠猜测的话估计只会凭借自己的直觉南辕北辙。

3.性能测试

这个一个非常重要的方式,提前写好程序的性能测试,这样就可以在你性能优化前后运行性能测试这样就可以实际的评估出部署程序以后实际解决性能问题的情况。同时可以避免一些因为性能优化导致的程序问题,比如你想针对数据库做缓存,那么这点就显得尤为重要了。

4.优先处理最大的瓶颈

在创建性能测试程序和使用 Profiler 分析应用程序以后,你会发现有一堆问题要去修复,但是问题又来了,还是不知道从何入手。

从一个可以最快解决问题改善性能的地方开始,这也是可以让你说服团队进行性能评估的必要性最好的依据了。但是相反,我建议从最重要的性能问题开始,这也是可以最大限度的改进性能。到这里通用的性能优化思路差不多了,我们了解一些 Java语言特定的优化方案。

6.在一个语句中拼接字符串使用 +

等下这个问题不是和 5冲突了吗?其实不是的。因为 String 的不可变性,如果在 for 循环中拼接String 每次都会创建一个新对象,但是一个语句中的 + 则不然,JVM 会在编译的时候针对一个字符串的 + 拼接做性能优化,最终使用一个 String对象,如下面的例子。

7.尽可能使用基本类型而不是包装类型

一个很常见并且很普遍的做法就是使用基本类型而不是包装类型,比如使用 int 替代 integer,使用double 替代 Double,这样可以使 JVM 把变量存储在 Stack 里面而不是 Heap 里面来减少整体的内存消耗。

8.尽量避免使用 Biginteger 和BigDecimal

上面我们已经在讨论数据类型,那我们继续看一下Biglnteger和BigDecimal,尤其是BigDecimal在精度上面给我们带来的利好足以让我们爱不释手,然而代价却是昂贵的。

与简单的long 或 double 相比, BigInteger 和BigDecimal需要更多的内存,从而大大降低了所有计算的速度。所以需要再三考虑是否存储值超过了long 类型的最大范围或者是精度无法控制了,如果不是优先考虑基本类型。

温馨提示:答案为网友推荐,仅供参考
相似回答