SORU
29 Aralık 2013, Pazar


Döngü inversion tekniği nedir?

Java için just-in-time compiler (JİT) optimizasyon teknikleri bahsediyor bir belge bakıyordum. Onlardan biri "döngü inversion". Ve belge diyor ki:

do-while bir döngü ile while düzenli bir döngü değiştirin. Ve 4* *döngü if hükmü yer almaktadır. Bu yeni iki tane daha az atlar yol açar.

Nasıl döngü inversion iş yapar ve nasıl kod yolumuz optimize mu?

N. B.:Eğer birisi modern işlemciler Java kod örneği ve JİT yerel kod optimize eder nasıl ve neden en uygunudur bunu açıklayabilir eğer çok iyi olurdu.

CEVAP
29 Aralık 2013, Pazar


while (condition) { 
  ... 
}

İş akışı

  1. kontrol durumu;
  2. eğer yanlış bir döngü dışarı atlamak;
  3. bir yineleme;
  4. üstüne atlamak.

if (condition) do {
  ...
} while (condition);

İş akışı

  1. kontrol durumu;
  2. false, loop ötesine atlamak;
  3. bir yineleme;
  4. kontrol durumu;
  5. doğru, adım 3'e atlayın.

Karşılaştırma bu iki sen-ebilmek kolayca görmek ikincisi olmayabilir herhangi atlar, sağlanan bu tam olarak bir adım döngü, ve genellikle numarasının atlar olacak bir daha az sayıda yineleme. Eski geri durumunu kontrol etmek için atlamak için tek koşul yanlış olduğunda döngü dışarı atlamak zorunda.

Mimarileri oldukça pahalı olabilir modern olmayanın CPU üzerine atlar: CPU başlamadan önce kontrolleri yürütme terbiye olduğu için, o atlamak zaten boru hattının tam ortasında ötesinde talimatları. Tüm bu işleme ise şube tahmin başarısız olursa atılmalıdır. Ayrıca yürütme boru hattı reprimed edilirken gecikir.

Açıklamayı bahsettitahmin şube: koşullu her çeşit İŞLEMCİ var atlamakikitalimatlar, her dahilbahissonucu hakkında. Örneğin, bir yönerge mi olur "değilse sıfır, sıfır bahis atlamakatlama her yineleme üzerinde yapılması gerekir, çünkü " bir döngünün sonuna sonuncusu hariç. Bu şekilde CPU talimatları atlama atlama izleyenler yerine hedef aşağıdaki Yönerge kendisi ile olan boru hattı pompalama başlar.

ÖNEMLİ NOT

Yapın lütfendeğilkaynak kodu düzeyinde optimize etmek için nasıl bir örnek olarak alın. Zaten sorunuzu net olarak ikinci ilk formdan dönüşümü JİT derleyici rutin bir işlem olarak yaptığı bir şey olduğu için tamamen yanlış, tamamen kendi başına olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008
  • SamsTech

    SamsTech

    4 NİSAN 2014