2010-02-06 17 views
16

Ek Javascript olay bağlarının performans ek yükünü ölçmem gerekiyor (jQuery kullanarak canlı), ek yük muhtemelen CPU yükünü artıracak ve yürütme zamanı profillemesinden fark edilmesi zor olacak.Javascript uygulamalarının CPU yükünü ölçün

Bir Javascript uygulamasının iki farklı sürümü arasındaki CPU yükleme farklılıklarını nasıl ölçebilirim?

cevap

6

Analiz için başka bir seçenek dynaTrace Ajax edition'dur. Resig bir quick overview of it here vardır. IE'ye özgüdür (ancak ... çoğu durumda en kötü performansa sahip olan bu kadar ...)

Bir göz atın, IE sorunlarına (bazı intranetlere bakıyorsanız tüm öneriler burada harika. DynaTrace mükemmel ve hala ücretsiz aracıdır.

0

Bu ölçümün çok borçlu olacağını düşünüyorum. Bununla ilgili sorun yaşıyorsanız, Chrome tarayıcıda yerleşik geliştirici araçlarına göz atın. Performansı kaydetmek ve sonuçları daha sonra karşılaştırmak için bir seçenek var. İşte Getting Started guide (Profil ve Optimizasyon videosunu en altta bulabilirsiniz).

2

Chrome dev araçları harika, ancak Chrome bir tarayıcı olmadığından, herhangi bir JS performansı konusunda endişelenmeniz gerekiyor ve bu da işleri çok daha iyi hale getiriyor, diğer tarayıcılarda darboğazlar bulmaya yardımcı olmuyor.IE 8 has dev tools, profilinize izin verir, böylece her zamanki Firebug profilleyicisinin yanı sıra yararlı bulabilirdiniz.

Ancak durumunuzla ilgili olarak, yalnızca bir olayın bağlanmasının çok fazla CPU yükü, daha çok bellek sorunuyla sonuçlanmadığını, ancak sıradan bir şey yapmıyorsanız endişelenmenize gerek olmadığını söylememe izin verin. sayfanda. Eğer jQuery.live işlevi hakkında özellikle endişe ediyoruz Ayrıca eğer

, nasıl çalıştığını bana çabuk açıklayayım: Diyelim ki $('#linksWrap a').live('click', fn);

  • Bu bir ve yalnızca bir olay işleyicisi oluşturur yapmak diyelim ve #linkswrap'a ekler.
  • Bağlantılardan birini tıklattığınızda, tıklatma etkinliği DOM ağacında kabarcıklar, sonunda #linkswrap ulaşır.
  • jQuery.live gerçekte hangi bağlantıdan geldiğini algılar. Bu bilgi tarayıcı Olay nesnesinde. Gördüğünüz gibi
  • jQuery.live aslında oldukça verimlidir, Yani

tıklanan bağlantının kapsamında fn geçerlidir. Tarayıcı sadece bir olay ekler, bu nedenle bellek kullanımı düşüktür ve yeni öğeleri sürekli olarak kontrol etmesine de gerek yoktur, olay kabarcıklandırmayı serin bir şekilde kullanır.

Aslında, bir sayfaya binlerce olay ekliyorsanız, iyi seçimler kullandığınızı varsayarak .live yönteminin daha verimli olabileceğini iddia edebiliriz. (Örneğin..something .foo .bar.baz çok fazla çaprazlama ve köpürme gerektirir, ancak #parentOfTheLinks a.links hızlı olacaktır)

0

CPU yüklerini karşılaştırmak için bilimsel olmayan ancak hızlı bir yolla, Chrome'un görev yöneticisini başlatabilir ve iki sürümün farklı sekmelerde/pencerelerde açabilirsiniz. Optimizasyon yapıyorsanız size yardımcı olmaz, ancak yeni sürümün daha az CPU aldığını size bir bakışta söyleyebilir.

İlgili konular