0

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

4

3 回答 3

2

没有相应的工具,但是您可以尝试 jVisualVM。

http://download.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html

它通常随您的 jdk 一起提供。@C:\Program Files\Java\jdk1.6.0_21\bin

于 2011-11-02T18:37:09.613 回答
0

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

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

于 2011-11-02T18:31:52.863 回答
0

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

有工具,但比工具更重要的是了解你在做什么。最重要的是要了解测量并不能告诉您要解决什么以获得更高的性能。它只告诉你你得到了多少改进。

提高绩效的方法是找到占用大量时间并且可以改进的活动,无论它们是什么。测量不是发现。例子:

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

这样做的真正回报是可能存在多个问题。假设问题 A 花费 40% 的时间,B 花费 20%,C 花费 10%,总时间为 10 秒。你追求A,最明显的一个。修复它可以将时间减少到大约 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。

现在我在这里处理数字,但这些都不是对本地化代码段所花费时间的度量。它们只是粗略的估计,通过描述程序正在做什么的少数详细样本中发生的事情而得到。样品并不真正关心测量。他们关心的是暴露问题。

于 2011-11-05T16:11:13.157 回答