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

コードの品質についてはお答えできません。他の人はできます。ただし、「パフォーマンスを向上させる必要がある」場合は、使用するツールを説明するよりも、その方法を説明したいと思います。

ツールはありますが、ツールよりも重要なのは、何をしているのかを理解することです。最も重要なのは、測定ではパフォーマンスを向上させるために何を修正すればよいかがわからないことを理解することです。それはあなたがどれだけの改善を得たかをあなたに伝えるだけです。

パフォーマンスを改善する方法は、時間のかなりの部分を占め、改善できるアクティビティを見つけることです。測定は見つかりません。例:

プログラムの状態を手動で数回サンプリングし、要素のフェッチや終了条件のテストなど、コンテナークラスの操作を実行していることを確認できます(これが検出部分です)。これは、さまざまな方法で発生する可能性があります。コード内に配置されるため、特定のルーチンが時間の大部分を費やしているようには見えません。特定のホットスポットや明らかなボトルネックはありません。「悪いアルゴリズム」や「遅いルーチン」はありません。人々が探していると言うようなものです。それでも、これらのいくつかのサンプルで、コンテナクラスの操作を実行していることがわかり、正確にどこにあるかを確認できます。 もしもこれらのコンテナクラスの操作を、同じ目的を達成する別の操作に置き換えることができ、時間を節約できます。どのくらいの時間?私がそれらの操作が起こっているのを見た時間の大体のほんの一部まで、そしてそれはかなり大きくなる可能性があります。

これを行うことの本当の見返りは、複数の問題が存在する可能性があることです。問題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 に答える
0

パフォーマンスと品質を教えてくれるツールはありません。どちらも測定が困難です。

FindBugs や IntelliJ の Inspector などを使用してコードを調べることはできますが、ルール違反を探すだけです。パフォーマンスの悪いコードを書いたときにそれを指摘してくれるツールを知りません。Java コード インスペクターは、データベースにインデックスがないことをどのように認識しますか?

于 2011-11-02T18:31:52.863 に答える