8

Linux で通常動作する Java アプリケーションを開発しました。Swing を使用した POJO アプリケーションです。パフォーマンスは適度に良好です。

今、2Gb RAM を搭載した Windows XP で、同等またはそれ以上の能力を持つマシンで実行しようとしましたが、パフォーマンスははるかに悪化しました。100% の CPU を使用していることがわかります。

例えば:

  • 多くのコンポーネントを含む非常に重いウィンドウを作成するプロセス: Linux 5 秒、Windows 12。
  • 重いクエリで PostgreSQL DB にアクセスするプロセス (サーバーと JDBC ドライバーは同じ): 23 秒 Linux、Windows 43.

    同様の機能を備えた仮想化された Windows マシンでも試してみたところ、結果は大幅に改善されました。

    それは正常ですか?パフォーマンスを向上させるためにどのパラメータを割り当てることができますか?

4

3 に答える 3

5

Linux と Windows XP を同じマシンで比較しない限り、違いを判断するのは非常に困難です。CPU は高速ですが、GFX カードとディスク サブシステムは低速である可能性があります。

Java は、このすべての IO および GFX 活動を基礎となる OS に渡します。Java でできる唯一の違いは、作業を減らすか、より効率的に作業することです。1 つの OS に固有に調整できるわけではないため、これにより両方のシステムが高速化される可能性があります。

于 2012-08-09T08:48:36.257 に答える
1

Java Visual VM (JDK の一部として配布されています) を実行してみてください。アプリケーションにアタッチし、CPU プロファイラーを使用して、CPU 時間がどこにかかっているかを正確に判断します。

于 2012-08-09T09:26:32.100 に答える
0

JRE パーツの動作には微妙な違いがある可能性があり (Swing が思い浮かびます)、JRE は悪い習慣 (Swing で間違ったスレッドから何かを実行するなど) に対して非常に容赦なく応答します。

手がかりがないので、両方の環境で同じユースケースをプロファイリングして、時間が費やされている場所に大きな違いがあるかどうかを確認します. これにより、ヒントが明らかになることが期待されます。

編集:そして、ブレーキをかけたままWindowsを実行しないようにしてください(別名、システムパフォーマンスを損なう可能性のあるウイルス対策やその他の「便利な」ソフトウェア)。

于 2012-08-09T13:07:58.993 に答える