2013-09-25 21 views
7

XMLファイルを解析する小さなWindowsデスクトップにJavaアプリケーションを開発しました。私は非常に興味深いとの非常に興味深い観察に出会った。JavaアプリケーションWindowsとMac OS X

私はアプリケーション用の実行可能なjarファイルを作成し、それをWindows Serverマシンで実行しました。これは非常に強力です。 2.7 GHz、50GB RAM、7200 RPM HDDでそれぞれ8コアの2つの物理Xeonプロセッサを搭載しています。アプリケーションを起動したときにマシンがアイドル状態だったので、他のアプリケーションがマシンを私と共有していないことは間違いありません。

後で、Macbook Proで実行ファイルを実行して、その動作を見て楽しんでいます。私の個人的なマシンは、4 GBのRAMと5400 RPMのHDDを搭載した2.2 GHzで動作するCore i7です。

驚いたことに、このアプリケーションは私の個人的に弱いマシンでは2倍高速でした。それは同じ入力\同じ出力でした。 IOはありませんが、解析するためにXMLを読むために、Terminalには何も表示されませんが、Start Time \ End Timeになります。&最終結果は1行です

このような劇的なパフォーマンスの違いの理由は非常に興味深いです。特に、ハードウェアレベルで弱いマシンからのもの。それはより良い方法でハードウェアを扱うオペレーティングシステムですか? JVMはうまく機能していますか?

答えて

9

Windowsでは、JREのデフォルトインストールにHotSpot Clientコンパイラが付属しています。このコンパイラは、より積極的な最適化を行い、はるかに高速なコードを生成するサーバーHotSpotに反して、基本的な最適化のみを行います。 Server HotSpotは、ほとんどのUnixライクやLinuxディストリビューション(Mac OS Xを含む)ではデフォルトです。これら2つのコンパイラのパフォーマンスの差は、しばしば2〜3倍です。クライアントHotSpotは、主にデスクトップアプリケーションの高速起動用に最適化されており、長時間実行されるプロセスの最高性能には最適化されていません。

あなたが発行し、次のコマンドを使用しているコンパイラをチェックするには:私のマシン上で

java -version 

をそれは与える:

java version "1.6.0_45" 
Java (TM) SE Runtime Environment (build 1.6.0_45-b06) 
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) 
         ^^^^^^ this 

をWindows上でサーバーのHotSpotを取得するには、JDKをダウンロードしてインストールする必要があります-serverコマンドラインスイッチでプログラムを実行します。

+0

こんにちはPiotr、これについては確かですか?このような劇的なパフォーマンスの違いをもたらし、はるかに強力でないマシンのパフォーマンスをより良くするでしょう。 WindowsをLinuxディストリビューションに置き換えるべきだと思いますか?私は非常に有益な情報に感謝するために投票しました。ありがとう – mowienay

+0

まず、Windowsマシン上のHotSpotコンパイラのタイプを確認してください。パフォーマンスの違いには他にも理由があるかもしれませんが、これは私の頭の上からのものでした。 –

+0

私はあなたが言ったようにしました。サーバーの注文を使用し、私の個人的なMacのような私のデスクトップのWindowsマシンで働いた。それは非常に非常に有益なアドバイスでした。私はServerの強力なマシンでのパフォーマンスを見て非常に興奮しています。ありがとうございました – mowienay

関連する問題