java代码性能分析工具

java代码性能分析工具,java,performance,analyzer,Java,Performance,Analyzer,有许多提高代码质量的工具。但如果代码不符合cod质量规则,有时也需要获得性能。是否存在用于此目的的开源工具? 谢谢。没有工具可以告诉您性能和质量。两者都很难衡量 您当然可以使用FindBugs或IntelliJ的Inspector之类的工具来检查代码,但它们只会查找违反规则的情况。我不知道有哪种工具会在我编写了性能不好的代码时指出问题。Java代码检查器如何知道您的数据库没有索引?没有用于此的工具,但是您可以尝试使用jVisualVM 它通常与您的jdk一起提供。@C:\Program Fil

有许多提高代码质量的工具。但如果代码不符合cod质量规则,有时也需要获得性能。是否存在用于此目的的开源工具?
谢谢。

没有工具可以告诉您性能和质量。两者都很难衡量


您当然可以使用FindBugs或IntelliJ的Inspector之类的工具来检查代码,但它们只会查找违反规则的情况。我不知道有哪种工具会在我编写了性能不好的代码时指出问题。Java代码检查器如何知道您的数据库没有索引?

没有用于此的工具,但是您可以尝试使用jVisualVM


它通常与您的jdk一起提供。@<代码>C:\Program Files\Java\jdk1.6.0\u 21\bin

关于代码质量,我无法回答您。其他人可以。但是,当您“需要获得性能”时,我宁愿告诉您如何做到这一点,也不愿告诉您使用什么工具

有工具,但比工具更重要的是理解你在做什么。 最重要的是要明白,衡量并不能告诉你要解决什么问题才能获得更高的绩效;它只告诉你你有多大的进步

提高绩效的方法是找到占时间很大一部分并且可以改进的活动,不管它们是什么。 测量不是发现。 例如:

我可以多次手动操作,并且大部分时间都可以看到它执行容器类操作,比如获取元素、测试结束条件等。 (这是查找部分。) 这可能发生在代码中的许多不同位置,因此没有特定的例程会导致花费大量时间。 没有特别的热点或明显的瓶颈。 没有“糟糕的算法”或“缓慢的例行程序”,人们说他们在寻找这些东西。 尽管如此,我可以在这几个示例中看到它正在执行容器类操作,并且我可以看到具体的位置。 如果我可以用实现相同目的的其他东西替换这些容器类操作,我可以节省时间。 多少时间?大约在我看到这些行动发生的时间的一小部分,这可能是相当大的

这样做的真正回报是可能存在多个问题。 假设问题A花费40%的时间,B花费20%,C花费10%, 总时间是,比方说,10秒。 你追求一个,最明显的一个。 修复它将时间减少到6秒左右。(加速比10/6=1.67)。 然后问题B需要更大的时间百分比(2/6=.33),因此更容易通过样本找到。 修复它将时间缩短为4秒(加速6/4=1.5) 那么C是(1/4=25%),比以前更容易找到。 移除它会将时间缩短到3秒(加速比4/3=1.33)。 总加速系数为10/3=3.33。 您可以将其视为每个加速比的复合乘积:10/6*6/4*4/3=10/3

现在我在这里讨论的是数字,但这些都不一定是在本地化代码中花费的时间的度量。 它们只是从描述程序正在做的事情的少量详细样本中得到的粗略估计。 样品与测量无关。
他们关心的是暴露问题。

您的红色问题很糟糕,或者您不知道主题。我的建议是,请阅读一些关于调优java性能的书籍,您会发现许多关于java性能的技巧。另外,例如PMD会产生一些性能提示。衡量性能可能并不难。这与开源工具有什么关系?你的观点是正确的;我认为这个问题很糟糕。你所需要的只是一个开源的调试器(你可以打断它):)我想有人可能会说它没有回答这个问题,细读一下。你可能想在这个问题上展开一些讨论。简要说明您试图评测的应用程序。例如,如果您的应用程序是IO密集型的,那么性能的提高可能不是来自代码。这是一个非常广泛的话题。如果您在问题中提供更多细节,您可能会收到关于其他人如何在性能调整方面取得成功的提示。我喜欢Visual VM,但它不会告诉您代码如何影响性能或“cod”[sic]质量规则。它将向您显示内存、CPU等,但不会告诉您如果您的度量是次优的,该怎么办。我建议使用安装了所有插件的1.3.2版,而不是与JVM捆绑在一起的版本。