Hüseyin MERT

Sadece teknoloji değil…

jQuery Seçici Performansı

sizzle-logo

Az kodla çok iş yapmanızı sağlayan jQuery’nin elementleri seçme hızını gözleyeceğiz. jQuery, yine bu kütüphanenin üreticisi olan John Resig tarafından geliştirilen Sizzle seçici motorunu kullanıyor. Bu da 1.3.x sürümlerinden itibaren ana çekirdeğe katılarak çok ciddi performans artışı (25 kat) sağlandı. Stack Overflow’da da bu konu tartışılmış ortalama aşağıda yazılanlarla aynı görüş üzerinde buluşulmuştu.
Kendim de benzer bir seçici performansı ölçen bir ufak kod yazdım. Biliyorsunuz istatistik oluşmak için çok dikkatlı olmak gerek. Fakat ben burda çok fazla bir detaylı bir çerçeve oluşturamayacağım için, sadece görmek için yeterli bir çalışma yaptım.
jquery-secici-performansi
adresinden inceleyebilirisiniz.
jQuery’nin seçici performansını açığa kavurşturalım adlı yazıda yer alan bilgilere göre seçicilerde seçicilerin (selectors) belirliği arttıkça seçme performansı çok daha hızlandığı görülmüş.Fakat şöyle bir durum daha var, eğeer seçme şartınız artarsa bu sefer performans düşmekte.

classname-speed2-md

Hatta bu konuda John da bir yazı yayınlamış seçicilerin class adı seçme temelleri hakkında bilgilendirmişti.

graph_1

$(’.element’) seçicisi $(’div.element’)‘e göre çok daha hızlı olduğu ölçülmüş.

graph_21

$(’.sample-elements:first’), $(’.sample-elements .last:last’), $(’.sample-elements div.last:last’), $(’.sample-elements div:first’), $(’.sample-elements div:eq(2)’) Gördüğünüz gibi seçicideki detayın fazlalaşması da yine seçicide performans düşmesine sebep oluyor.

graph_3

Asıl performanslı seçmeyi hiç şüphesiz ki id isimle seçtiğimizde alıyoruz.

console.time('test');  
for (i = 0; i < 500; i++) {  
    $('.'+i);  
}  
console.timeEnd('test'); 
// $('.class');
// ~8204ms 
 
console.time('test');  
for (i = 0; i < 500; i++) {  
    $('#'+i);  
}  
console.timeEnd('test'); 
// $('#id');
// ~32ms

Bu seçiciler hakkında çok daha fazla seçicinin performans testini bu linkten yapabilirsiniz. Faydalanabileceğiniz diğer yazılar ise:

Yazar: Hüseyin Mert

Etiketler: , , , , , , , , , , , , , , , , ,

Yazının QR Code'u

  1. aboww

    o sinek nirden çıktı

    07 Ekim, 20:10

  2. Bilogumu çöp götürüyor, hamam böcükleri var heryerde :)

    07 Ekim, 20:10

  3. Ya bu jQuery’nin yapamayacağı şey yok gibi …

    07 Ekim, 21:10

  4. Mustafa

    “$(’div.element’) seçicisi $(’.element’)‘e göre çok daha hızlı olduğu ölçülmüş”
    Bu belirttiğiniz tanım ile grafik uyuşmuyor. Acaba yanlışkmı var diye verdiğiniz birinci bağalantıya da baktım grafiği onaylar şekilde bir sonuç yayımlamışlar.

    23 Ocak, 12:01

  5. Mustafa teşekkürler, düzelttim.

    23 Ocak, 12:01

“jQuery Seçici Performansı” için yorumunuz

Kebikec Böceği var sitede. Yorumlar için Besleme Yorumlar için Besleme(RSS)