确定我的 Java 程序的哪些部分需要优化
Posted
技术标签:
【中文标题】确定我的 Java 程序的哪些部分需要优化【英文标题】:Identifying which parts of my Java program need optimization 【发布时间】:2011-02-14 11:55:33 【问题描述】:我想优化我的 Java 源代码,但我不确定我的代码的哪些部分可以优化。是否有任何工具或技术可以优化我的 Java 源代码?
我知道代码优化的基本原理,但是我有大量的行和非常复杂的源代码(Java 类)。
我可以在 Java 分析器的帮助下优化我的代码吗?
提前致谢!
【问题讨论】:
阅读一个关于优化的问题真是令人耳目一新,其中涉及使用 measurement 来确定哪些代码需要优化! @Adam .. 谢谢。但是你的意思是...CONFUSED ::-( ? 这不是一个完整的答案,但是:在整个过程中记住你的目标。在您开始之前,请考虑究竟为什么您正在优化(即您的目标吞吐率是多少以及您如何衡量它们),然后确定导致该目标目前未能实现的代码区域.如果您没有特定的目标,那么您不太可能“仅仅因为”而优化。 足够快足够快。 @water:很多人认为他们知道程序的哪些部分需要优化(不使用任何测量工具)。不幸的是,如果不使用测量工具,很难预测哪些部件需要优化。有些人试图优化程序中实际上不需要优化的部分。当这种情况发生时,他们的工作就白费了。 @water:你能接受它实际上很容易做到的想法吗? Here's the method in Java. 你不应该猜测的建议,你不应该在没有分析的情况下进行微优化(这是一种猜测形式),是完全正确的。但是,为了找到要优化的内容,很多人会说“测量测量”,但这实际上是非常间接的。试试上面的方法。它很粗糙,但非常有效。 【参考方案1】:优化代码是什么意思?你想重构你的代码来简化它吗?在这种情况下,我建议您使用 IDE 来帮助重构代码。
如果您想最大限度地减少其内存/CPU 消耗,我建议您使用像 VisualVM 或 YourKit 这样的分析器来确定消耗资源的位置。
代码分析工具还可以帮助找出明显的性能问题。我在 IDE 中输入代码时会进行代码分析,这有助于我在编写代码时找出这些问题。
【讨论】:
一旦您确定了需要更好执行的代码部分,您可能需要重构它们。更简单的代码通常也运行得更快。 ;) 两者往往一起去。【参考方案2】:性能优化 - 是的,分析器可能会有所帮助。至少它可以向您显示应用程序中那些占用了意想不到的 CPU 时间的区域。
但在开始应用更改之前 - 请注意不要进行一些微优化。先看看改进算法。有时我们使用嵌套的 for 循环,而一个任务可以用一个(线性时间)完成。仔细检查您是否使用了正确的集合类型。然后看看你是否不小心创建了比需要更多的对象(循环中的对象创建是性能问题的典型原因)。
【讨论】:
【参考方案3】:它们是用于静态代码分析的几种工具(用于对代码进行代码样式/代码约定/最佳实践/错误“优化”)。
Checkstyle PMD Findbugs我建议使用Sonar。它涵盖了所有内容并且易于设置 - 即使在本地机器上(解压缩并启动)。它最适合用于 maven 项目,但也适用于 NON maven 项目。
【讨论】:
是的,每个工具都带有一个 eclipse 插件。 Sonar 是一个独立运行的质量管理平台,但分析结果也可以通过 eclispe 插件绑定到代码)。绝对值得一试!以上是关于确定我的 Java 程序的哪些部分需要优化的主要内容,如果未能解决你的问题,请参考以下文章