4

私はセミビッグ Java アプリケーションを持っています。それは非常に貧弱に書かれており、物事を少しきれいにしてパフォーマンスを向上させるためにできる簡単なことはたくさんあると思います。

たとえば、最近見つけた

String.matches(regex)

関数は、同じ正規表現を使用するループでかなり頻繁に使用されます。だから私はそれをプリコンパイル済みの Patternsに置き換えました。私は FindBugs を使用していますが (これは素晴らしいところであります)、この問題を見つけられず、職場で使用できるツールが限られています。

私が見るべきこのような単純なものは他にありますか?

4

6 に答える 6

5

これらのさまざまなツールを見てください。

これらすべてのツールの優れたラッパーであるSonarもご覧になることをお勧めします。

これらのツールはすべて無料です。

全体的に、それらはパフォーマンスを向上させるのではなく、コードの品質を向上させるのに役立ちます。

于 2009-02-27T13:33:27.157 に答える
5

まず第一に、よく書かれたアプリケーションにします。私の経験では、パフォーマンス上のメリットのほとんどは、巧妙な最適化を行うのではなく、愚かなことをしないことで得られます。

適切に作成されたアプリケーションができたら、プロファイラーを実行して重要な部分だけを最適化します。

于 2009-02-27T13:34:30.727 に答える
4

問題はパフォーマンスですか?もしそうなら、さまざまな条件下でコードをプロファイリングし、どこで時間が費やされているかを知るための確かなデータが手元にあるまで、何もやり直すことはありません。まったくメリットのないものを変更している可能性があります。

スレッドセーフが気になります。その点はどの程度注意されましたか?

リファクタリングする場合は、まず JUnit テストを作成することから始めます。コードに慣れるのに役立ち、安全策を提供します。変更の前後でテストに合格する必要があります。

最も重要なことは、面倒だからという理由だけで大きなリファクタリングを行わないことです。チームと顧客は、開始する前に、あなたが何をしているかについて理解している必要があります。自分の (確かに良い) アイデアを他の人に伝えましたか? ソフトウェアはチーム スポーツです。コミュニケーションが鍵です。

于 2009-02-27T13:34:42.257 に答える
0

プロファイラーを介してコードを実行します(速度とメモリの両方を確認してください)。遅い場所(通常は思っている場所ではない)を見つけたら、スピードを上げるために何ができるかを考えます。

もう1つの便利な方法(少し勇気がある場合)は、NetBeans 7.0 M2を使用することです(あまり慌てる必要はありません。リリースされていないバージョンは一般的に非常に安定しています)。コードをリファクタリングするための「Jackpot」というプラグインがあります。それらのいくつかはパフォーマンスに関係しています...しかし、私はそれらのどれも速度に根本的な変化をもたらすとは思わない。

一般的に言って、コードをクリーンで読みやすくしておくと、高速になります。速くないときは、混乱している場合よりもスピードを上げるのが簡単になります。

高速でなければならないことがわかっているもの(クラスファイルを解析するコード)を書いていたときに行ったことは、変更を加えるたびにプロファイラーを実行することです。したがって、1つのステップとして、String。、internを呼び出して、すべての文字列が一緒にプールされていることを確認することで、memroyを減らすと思いました。intern()呼び出しを追加すると、メモリは少し減少しましたが、時間が大幅に増加しました(String.internは不必要に遅いか、数年前でした)。ですから、その時点で、私が今やったことは容認できないほど遅いことを知っていたので、その変化を元に戻しました。

一般的な開発ではこれを行うことはお勧めしませんが、プロファイラーを介してコードを1日1回または週に1回実行して、状況を確認するだけでは生産性が低下するわけではありません。

于 2009-02-27T15:20:50.817 に答える
0

本が好きなら、Josh Bloch の『Effective Java 』を読むことを強くお勧めします。

于 2009-02-27T15:53:04.670 に答える