提高 Java 性能的 24 种方法

在使用 Java 开发您的网站和应用程序时,您希望编写的代码不仅仅是可服务的、易于使用且令人愉悦的代码。毕竟,您希望您的用户一次又一次地回来获得更多。通过对您的编程风格进行这些调整,您将能够每次都充分利用 Java。

从 Java 获得最佳性能

Java 中的优秀应用程序通常是那些尽可能快速和有用的应用程序。今天,大多数用户希望他们的应用程序能够快速运行,并且如果他们当前的供应商未能达到标准,他们也不会闲逛。
在性能方面,有两个主要问题会导致问题:糟糕的设计或代码问题。正如您将在本指南中看到的,许多因素都会影响应用程序代码。为避免这些问题,您将使编码变得更简单。
在编码中,一个有用的心理笔记是知道你会在这个过程中犯错误。没有人第一次就能把事情做到完美,有经验的程序员知道错误总是会偷偷溜走。Java 比大多数语言更直观,但人类和计算机之间仍然存在差距。你不会总是做对,这就是为什么您需要知道在代码一致性方面有哪些因素在起作用。

提高 Java 性能可以采取的措施

在了解具体细节之前,您可以使用一些经过验证的方法来提高代码的性能。这是您在编码时可以执行的操作,以将错误降至最低并提高性能。

执行分析和负载测试:执行定期测试将快速揭示任何瓶颈,以便您可以快速解决问题。

避免递归:虽然有时您无法避免递归,但您应该尽可能避免递归。

升级硬件和带宽:如果您遇到问题,问题可能不在代码中,而在于您的硬件或 LAN 或 WAN 带宽。解决这些问题,以便您可以排除它们。

清理代码和算法:你的代码越干净,就越容易维护。尽可能保持清洁,这样您就可以掌握任何问题并为协作提供更轻松的基础。

提高 Java 性能的 24 种方法

  1. 使用构造函数进行实例化 
    如果您的集合只初始化一次,最好将它们发送到构造函数集合。此方法比使用AddAll实例化集合和设置值效果更好。
  2. 使用 AddAll 而不是 Add
    如果您要向数组中添加一些东西,那么最好使用AddAll,而不是AddAddAll为您提供更高的每秒操作数。
  3. 使用 EntrySet 而不是 KeySet
    类似地,更改 up 命令将帮助您获得更快、更流畅的体验。如果您在地图上进行大量迭代,那么 EntrySet 将比 KeySet 工作得更好。EntrySet 可以在一秒钟内比 KeySet 多运行 9000 次操作,因此您将通过这种方式获得更好的性能。
  4. 尝试使用 SingletonList 而不是单元素数组 
    如果您需要返回仅具有指定索引的列表,请使用 SingletonList 来执行此操作。顾名思义,这里的列表将只包含指定的对象。返回的列表是可序列化的,将帮助您提高代码的可用性。
  5. EnumSet 是 Enum 值的最佳选择 如果您正在使用 Enum 值,那么使用
    EnumSet会更有意义。它允许比其他方法更快的计算,从而使成品总体上更快。EmunSet的值以可预测的顺序存储,而其他方法(如HashSet)需要更长的时间才能产生相同的结果。
  6. 不要随意初始化对象
    使用 Java 时,最好先尝试着看大局,然后再处理单个代码构建通道。例如,您可以在创建代码时尝试初始化对象,但这可能会导致不必要的工作量,随着时间的推移,这些工作量很快就会达到令人震惊的程度。尽量重复使用。这样,您会立即获得两大好处:1) 您的工作更易于管理,2) 您的代码更简洁。
  7. 使用正确的命令检查字符串
    需要知道字符串是否为空?那么最好的命令是String.isEmpty()。此函数有效,因为String是一个byte[]并且isEmpty检查数组的长度。这样,您可以在检查时更快地获得结果。
  8. 用一个字符替换单个字符串
    在这些字符串中添加一个单数字符会使事情变得更快,因此您再次加快了编码过程。
  9. 确保您正在使用 StringBuilder 
    StringBuilder
    是另一个在 Java 中更容易完成的字符串工具。虽然很多人会使用StringBuffer,但它的使用速度不如 StringBuilder 快。要自己检查,请实例化一个新的 StringBuilder 并调用 append 方法将新部分添加到字符串中。一旦所有工作部分都到位,您可以使用toString()命令并检索字符串本身。请注意,StringBuilder 不是线程安全的,因此它可能不适用于所有情况。
  10. 尽可能使用基元
    “基元类型是包装类的合适替代方案,”技术作家 Nikola Heath 在1 Day 2 WriteWrite My X中说道。“它们有助于减少内存消耗,从而提高效率。” 在这些情况下,最好使用int代替Integer并使用double代替Double。在任何可以帮助提高整体性能的地方使用这些。
  11. 始终首先解决最大的问题
    在创建测试套件并着手解决问题之后,总会有几个未解决的问题。您可以先寻找小问题,因为它们很快就能解决。但是,最好先解决最重要的问题
    当您立即处理更复杂的项目时,您的性能将会提高,并且您可以更快地获得代码批准,而无需处理更小的问题。
  12. + 可用于在一个语句中连接字符串 在
    学习 Java 时,您可能已经记得不应该使用“+”来连接字符串。如果您在应用程序逻辑中这样做,这是正确的。但是,如果您将字符串分成多行以使其更具可读性,则可以这样做。在这些情况下,您可以使用简单的“+”来执行此操作。
  13. 使用 Apache Commons StringUtils.replace
    大多数编码人员将使用String.replace,这将完美地满足他们的需求。对于那些需要大量更换操作的人来说,有更快的方法可以做到这一点。如果您使用的是 Java 8,则Apache Commons StringUtils.replace可以完美运行,而且它比原生选项快得多。但是,如果您使用的是最新版本的 Java,那么使用String.replace可能会更好。
  14. 避免使用 BigInteger 和 BigDecimal
    程序员经常使用这些数据类型,因为它们提供了很高的精度。但问题是,它们使用了大量内存,这会影响最终产品的总生产速度。虽然有时您无法避免它们,但如果可能的话,最好不要使用它们。长命令或双命令通常会为您提供所需的内容,这可能足以提高代码的性能。
  15. 始终检查日志级别
    在您的代码中创建任何日志时,您需要确保您的日志框架将支持日志消息。如果不这样做,您可能会发出一条代码忽略并保持不可见的消息。这样做可以节省以后的工作。
  16. 确保您正在使用缓存
    您将知道重用代码片段比每次需要时都创建新代码片段要便宜得多。这就是为什么在使用 Java 时必须使用缓存。一些缓存实例内置在语言本身中。例如,valueOf方法缓存 -128 和 127 之间的值。
    使用缓存时,您需要记住它仍然需要一些内存。您将需要创建一个平衡点,在需要的地方使用缓存来获取有意义和未开发的资源。
  17. 不要在需要之前
    进行优化 尽快开始优化似乎是有意义的,但事实恰恰相反。“如果过早开始优化,可能会使代码更难维护,”Brit Student and Next Coursework 的作家 Patrick Slater 说。“你通常需要做更多的改变,因此需要更长的时间来处理整体问题。”
    如果您觉得需要立即优化某些内容,请将其与您的原始计划进行比较。您的代码需要执行多快,这部分会减慢多少?如果它是一个显着的减少,那么它是安全的工作。
  18. 改进后运行性能测试套件
    要让代码按您希望的方式运行,您必须在改进后进行测试。定义一个性能测试套件来检查您正在编码的整个应用程序,并在更改前后运行它。
    这样的测试为您提供了关于什么对您的代码有帮助和没有帮助数据。它还可以确保您交付的产品可能是最好的,因此请确保您运行这些测试,并使它们成为您开发程序的一部分。
  19. 保持方法简短
    在您的代码中创建任何方法时,最好使它们尽可能简短。通常,任何方法都应该适用于单一功能——它可以提高整体性能,并使您在维护方面更容易。更广泛的方法将使用更多的内存并减慢一切。最好将您的方法分解成更小的方法。
  20. 不要在循环中获取集合的大小
    如果您正在迭代任何集合,请事先计划其大小,而不是在迭代本身中。不适应集合大小是另一个常见的错误,它会减慢代码速度并使您在编程时变得更加困难。
  21. 尽可能避免创建大对象
    在编码中,某些类将充当数据持有者。它们会占用内存,因此最好尽可能避免创建它们。DB 连接对象、系统配置对象和会话对象都是很好的例子。
    在创建时,它们会使用许多资源,因此最好在代码中尽可能重用这些资源。
  22. 尝试使用 PreparedStarement 而不是 Statement
    当通过您的应用程序执行 SQL 查询时,PreparedStatement通常在性能方面比 Statement 更好。PreparedStatement 对象编译一次并运行多次,与 Statements 不同,每次使用时都会收集。
  23. 确保正确使用联接
    从多个表中获取数据时,需要使用联接。如果您未能正确实施它们,订单执行可能会出现更多延迟。这会导致性能问题,否则这些问题很容易避免。为经常使用的表列创建索引有助于提高性能速度。
  24. 避免不必要的登录
    在第 15 点中,您看到了在记录任何内容之前需要如何检查日志级别。所有日志记录都需要高效,以免影响性能速度。通常,最好的方法是只在特定参数内记录,并避免将大对象放入日志。

使用本指南来适应可能影响Java 性能和代码的所有不同因素。进行必要的调整,看看它有多大的不同。  如果您喜欢这篇文章,请查看我们关于程序员提示和技巧
的其他几篇文章。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值