2016-03-21 54 views
1

Geçenlerde java öğrenmeye başladı ederken daha döngü için ve ben türneden daha hızlı döngü

aşağıda programı loop--

public class ForLoopExample { 
    public static void main(String[] args) { 
     long startTime = System.nanoTime(); 
     for(int a = 0; a < 10; a++) { 
      System.out.println(a); 
     } 

     long endTime = System.nanoTime(); 
     System.out.println("for loop timing = " + (endTime - startTime) + " ns"); 
     System.out.println("loop completed"); 
    } 
} 

ve için hızını belirler --- bu kelimler am çıkış zamanlama: döngü zamanı için

= 853716 ns

ise döngüsünün hızını belirleyen programı:

public class WhileLoopExample { 
    public static void main(String[] args) { 
     int a=0; 
     long startTime = System.nanoTime(); 
     while(a < 10) { 
      System.out.println(a); 
      a++; 
     } 
     long endTime = System.nanoTime(); 
     System.out.println("while loop timing = " + (endTime - startTime) + " ns"); 
    } 
} 

ise fazla on ile çevrim zamanlaması = 928.358 ns

Why does this happen a detailed explanation would be appreciated. 
+5

Bir fark olmamalıdır. Testinizi, sadece 10 olan, neredeyse temsil etmeyen, daha fazla döngü yinelemeleriyle tekrar deneyin. – f1sh

+3

Ayrıca bkz http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java –

+0

Emin değilim ama sanmıyorum eğer JVM arkaplan çalışması o zaman 'while' değişkeni' a 'sadece ihtiyaç duyulduğunda kayıt olarak yüklenebilir. Ve 'for' döngü değişkeninde 'a 'döngü çalışırken her zaman kaydedilebilir. Üzgünüm, İngilizce benim ana dilim değil. –

cevap

2

yeniden çalıştırın test yinelemeler, ama aynı zamanda iterasyonların daha fazla yinelemesini, 10000 iç döngüde ve 10 dışta ve ortalama sonuçları. Yakın olmalılar.

Varyansın nedeni işletim sisteminin ve çoklu iş parçacığının sonucudur. OS, programınız dışındaki birçok görevi yönetmektedir ve bunlar programınızdan biraz daha öncelikli olabilir. Bu, uygulamanızda görme gecikmelerine neden olur. Daha büyük bir örnek büyüklüğüne sahip olması sonuçlardaki varyansı azaltmalıdır.

İlgili konular