2016-12-11 7 views
-3

私は小さなコードを持っています。私はなぜJavaコンパイラが非常に速く動作するのかわかりません。Javaコンパイラはなぜ非常に速く動作しますか?

int a= 0; 
    while(true) { 
     a++; 
     if(a==0) break; 
    } 
    System.out.println(a); 

そして、私はゆっくりと線でwhileループも印刷ラインにprintlnを置く場合:

これはコードです。

int a= 0; 
    while(true) { 
     a++; 
     if(a==0) break; 
     System.out.println(a); 
    } 

私の質問は、次のとおりです。Javaのメカニズムは、どのように高速に動作するのですか(例1)?

+1

2番目の例では、JVMは別のリソースである標準出力に情報を出力しなければなりません。 – grsdev7

+2

コンソールに印刷して余分な作業をしている人もいれば、もう1人はそうではありません。明らかに、より少ない作業を実行するものがより速く実行されます。 – user3437460

+0

@ NguyenCongTriあなたは*コンパイル*または*実行*時間に興味がありますか?タイトルは1つのことを、もう1つの質問は他のものを示します。 – Biffen

答えて

2

System.out.printlnは、純粋に計算的なwhileと比べて非常に遅いです。最初の例はブレークにヒットし、printlnは1回呼び出され、2つ目の例はすべてのサイクルでprintlnを持ちます。

1

どちらの場合でも、コンパイラは条件を確認するのに同じ時間を要しますが、例1では余分な行を書き、コンソールに何かを出力する必要があります。 System.out.printlnは高価な操作です。 System.out.printlnステートメントは、条件をチェックするための時間がかかりません。

0

コンソールへの書き込みは高価であり、表示はさらに高価です。すべてのシステムコールは、操作より約1000倍高価であり、実際に画面を更新することは、> 10倍も高価です。

何もしないループは、JITによって破棄することができます。

関連する問題