SORU
8 Temmuz 2009, ÇARŞAMBA


Tarayıcılar her sayfa yük javascript ayrıştırma mı?

Tarayıcılar (IE ve Firefox bağlantılı javascript dosyaları sayfa yeniler her zaman ayrıştırmak?

Onlar önbellek dosyalarını, yani sanırım onlar için karşıdan onlara her zaman, ama her sayfa aslında ayrı, sanırım onlara yıkmak eski kod ve yeniden ayrıştırma.

Bu verimsiz, bu anlaşılabilir bir durum olsa da, ama eğer modern tarayıcılar siteleri içinde ayrıştırma adım önlemek için yeterince akıllı olup olmadığını merak ediyorum. Bir site javascript Kütüphanesi gibi ExtJS veya DV vb kullanır durumlar düşünüyorum.

CEVAP
13 ŞUBAT 2012, PAZARTESİ


Bu kadar kazmak için bu detaylar. Bu dikkati çekiyor ilk o halde JavaScript genellikle kabul edilir yorumlanmış ve kaçak bir VM, bu değil gerçekten durum ile modern tercümanları, hangi eğilimi derlemek için kaynak doğrudan makine koduna (dışında YANİ).


Krom : V8 Motor

V8 bir derleme önbelleği vardır. Bu depolar JavaScript 5 çöp koleksiyonları için kaynak bir karma kullanarak derlenmiş. Bu kaynak kodu aynı olan iki adet bellek önbellek girdisi dahil olduklarını nasıl olursa olsun paylaşmak anlamına gelir. Bu önbellek sayfaları yeniden temizlenmez.

Source


Güncelleme - 19/03/2015

Krom takımı details about their new techniques for JavaScript streaming and caching yayınladı.

  1. Senaryo Akışı

Senaryo akışı optimize JavaScript dosyaları ayrıştırma. [...]

Sürüm başlayarak 41, Chrome indirmeye başladı en kısa sürede ayrı bir iş parçacığı üzerinde zaman uyumsuz ve ertelenmiş komut ayrıştırır. Bu ayrıştırma sadece milisaniye indirme işlemi bitti ve sayfaları sonuç olarak çok  daha hızlı olarak yükleniyor sonra tam anlamına gelir.

2=başlangıç
  • Kod önbelleği

    Normalde, V8 motor, her bir sayfanın JavaScript, işlemci anlayan talimatları dönüştürmeyi derler. Bu derlenmiş kod daha sonra bir kullanıcı derlenmiş kod derleme sırasında makinenin durumunu ve içerikle sayfa uzak gider bir kez atılır.

    Krom 42 kullanıcı sayfaya döndüğünde indirme, ayrıştırma, derleme adımları atlamış olabilir, böylece derlenmiş kodu yerel bir kopyasını saklamak gelişmiş bir tekniği tanıttı. Her sayfa yük üzerinde, bu Krom derleme zamanı @'ı hakkında önler ve mobil cihazlar üzerinde değerli pil kaydeder.


    Opera : Carakan Motoru

    Pratikte bu her script bir program olacak demektir derlenmiş olan kaynak kodunu başka bir program aynıdır bir önceki çıktıyı tekrar kullanıyoruz son zamanlarda derlenmiş oldu derleyici ve derleme tamamen adımı atlayın. Bu önbellek oldukça nerede tarama senaryo tipik bir sayfa yük etkili sonra bir haber farklı haber makaleleri gibi aynı siteden sayfa, her sayfayı sık sık aynı yükler, bazen çok büyük bu yana hizmet,, kod kitaplığı.

    JavaScript sayfayı yeniden yükler üzerinde önbelleğe alınır bu nedenle, aynı komut için iki istekleri yeniden derleme neden olmaz.

    Source


    Firefox : SpiderMonkey Motoru

    SpiderMonkey doğal arka uç, JİT derleyici olarak Nanojit kullanır. Makine kodu derleme işlemi here görülebilir. Kısacası, bugörünüryüklü olduğu gibi komut dosyaları yeniden derlemek için. Ancak, eğer we take a closer lookNanojit gördüğümüz en yüksek seviye monitör jstracer, için kullanılan parça derleme olabilir geçiş sürecinde üç aşama sırasında derleme, bir fayda sağlamak için Nanojit:

    İzleme monitörü ilk devlet izliyor. Bu demektir spidermonkey koduna göre yorumluyor. Her zaman spidermonkey geriye-atlama bayt kodu, monitör not yapar yorumlar jump-hedef program sayacı (PC) değeri kaç kez olmuştur atladı. Bu rakam PC için hit sayısı denir. İsabet ederse özellikle BİLGİSAYAR sayısı hedef eşik değerine ulaşır sıcak olarak kabul edilir.

    Monitörün hedef PC sıcak karar verdiğinde, bir karma tablosu görünüyor eğer bir parça için yerel kod holding ise orada görmek parçalarının hedef PC. Eğer böyle bir parça bulursa, o geçişler modu yürütme. Aksi modunda kayıt için geçişler.

    Bu kod hot parçaları için yerel kod önbelleğe alınmış olduğu anlamına gelir. Yani çekirdekler gerekmez. Yerel bölümler sayfa yeniler arasında korunur bu karma olduğunu açıkça belirtmiş değildir. Ama kabul ediyorum.Herkes o zaman bu mükemmel destekleyici kanıt bulmak.

    EDİT: Mozilla geliştirici Boris Zbarsky Gecko derlenmiş komut önbellek olmadığını belirttiği dikkat çektihenüz. this SO answer alınan.


    Safari : JavaScriptCore/SquirelFish Motoru

    Bu uygulama için en iyi cevabı zaten 12 ** olduğunu düşünüyorum.

    Şu anda bayt kodu (veya yerel kod) önbellek değiliz. Bir
    düşündük seçenek, ancak, şu anda, kod nesil
    peşinde değiliz . önemsiz kısmı JS yürütme zamanı (&; 2% lt), ^br> şu an bu.

    Bu Maciej Stachowiak, Safari kurşun geliştirici tarafından yazılmıştır. Bunu doğru olarak kabul edebiliriz sanırım.

    Ben şey olamadım bulmak başka bir bilgi ama sen-ebilmek okumak daha hakkında bu hızlı gelişmeler son SquirrelFish Extreme motor here istediğiniz yerde kaynak kodu here eğer maceracı duygu.


    YANİ : Çakra Motoru

    9 JavaScript Motoru (Çakra) bu alan ile ilgili mevcut bilgi yok.Eğer herhangi bir şey bilen varsa, lütfen yorum.

    Bu çok gayri resmi, ama IE için büyük motor uygulamaları, blog yanıtla here (a MS developer of JScript) Eric Lippert Birleşik Devletleri:

    JScript, JScript Klasik Klasik herhangi bir programı çalıştırmadan önce, tam olarak kodu sözdizimi denetimi, tam bir ayrıştırma ağacı oluşturmak ve bir bayt kodu oluşturmak bu anlamda derlenmiş bir dil gibi davranıyor. Biz o zaman bir tercüman aracılığıyla Java bayt kodu çalıştırın. Bu anlamda, JScript "" Java. derlenmiş olarak her bit.Fark JScript veya bizim tescilli bayt kodu ısrar incelemek için izin vermez. Ayrıca, Java çok daha üst düzey daha JVM Java-JScript Klasik Java dili biraz daha fazla, market, süper ve ayrıştırma ağacı ise JVM bayt kodu olduğunu açıkça amaçlanan ameliyat düşük seviyeli bir yığın makine.

    Bu bayt kodu herhangi bir şekilde kalıcı değil önerir, ve böylece bayt kodu önbelleğe.

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

    YORUMLAR

    SPONSOR VİDEO

    Rastgele Yazarlar

    • ipsy

      ipsy

      1 EKİM 2012
    • Māris Zaharovs

      Māris Zahar

      28 Mayıs 2008
    • Rockstar Games

      Rockstar Gam

      17 ŞUBAT 2006