私はNetbeansでJava 8 SEアプリケーションを開発しています。私は最近、アプリケーションに追加した新しい機能が遅すぎる(計算が止まるまで約1分)。そこで私はプロファイラを起動して、主要なボトルネックが何かを確認しました。驚いたことに、計算は約7秒で完了しました。プロファイラを添付してJavaアプリケーションを高速化するのはなぜですか?
最初は信じられませんでしたが、結果は正しいものでした。 もう一度試してみましたが、プロファイラを接続してアプリが常に10倍速く実行されました。コンパイル済みの.jarファイルをWindowsのコマンドラインから直接実行しようとしましたが、計算に何分かかかりました。
添付されたプロファイラは、パフォーマンスに非常に大きな力を発揮します。 JVMやアプリケーションにはどのような変更が加えられますか?
私は提供されたJavaラッパーを使ってこれらの計算にネイティブOpenCVを使用しています。
//編集 - 追加情報:基本的にVisualVMと思われる組み込みのNetbeans 8.1プロファイラを使用しています。プロファイリング方法については、「メソッド」とその実行時間と呼び出し回数を監視することを選択しました。パフォーマンスのバンプは、計測されたプロファイリングとサンプリングされたプロファイリングの両方で発生します。
あなたの質問は、 「プロファイラ環境がより速くなる」から「なぜ非プロファイラ環境が遅くなるのか」を選択します。 – brycem
どのプロファイラを使用しますか? 'JVMやアプリケーションにどのような変更を加えますか? 'というのは、異なるプロファイリング手法(サンプリング、計測、...)があるので、その情報を与えるだけで答えることができます; –
@ Markus Weninger – Leprechaun