Muhammed Medeni Baykal

C#, Visual Basic, Javascipt ve jQuery ilgili yazılarımı, makalelerimi; ara sıra romantikleştiğimde edebîmsi yazılar yazdığım blog şeysi.

jQuery Seçicilerinde Performans Testleri

, , | Javascript | 25.02.2010

jQuery’yi hepiniz duymuşsunuzdur, zaten duymayanı dövüyorlar burada ;) jQuery seçicileri, javascript üzerinden bize çok karmaşık olabilecek seçme işlemlerini rahatça yapma imkanı veriyor. Şimdi, çesitli durumlarda bu seçicilerin performanslarını test edeceğim… Karşılaştırmalar Internet Explorer 8 üzerinde yapılmıştır.

HTML Nesnesi Yaratmak

var div = jQuery("<div />").attr("id", "test123")
                           .addClass("divIste"); 

jQuery’de bir HTML nesnesi yaratmak istediğimiz zaman, yukarıdakine benzer bir kod kullanırız.  Ancak bu kullanım, aşağıdaki ile karşılaştırıldığında %20 daha yavaş.

var div = jQuery(document.createElement("DIV"))
                      .attr("id", "test123")
                      .addClass("divIste");

HTML Nesnesi Seçmek

ID ile Şeçmek

jQuery seçicilerini kullanrak bir HTML nesnesi seçmek için genelde aşağıdaki gibi bir kod bloğu kullanırız:

var div = jQuery("#ssTest").toggleClass("divIste");

Ancak, bu yöntem aşağıdaki ile karşılaştırıldığında %22 daha yavaş.

var div = jQuery(document.getElementById("ssTest"))
                         .toggleClass("divIste");

Tür ile Seçmek

jQuery’de belli bir türde olan nesneleri seçmek için kulladığımız,

var div = jQuery("input").toggleClass("divIste");

kod bloğu,

var div = jQuery(document.getElementsByTagName("input"))
                         .toggleClass("divIste");

kod bloğundan yaklaşık %3 daha yavaş…

Sonuç

jQuery üzerinden, ID ile nesne seçimi yaparken ve yeni bir nesne oluştururken ikinci örneklerdeki gibi yaparsak, belli bir oranda performans kazancı sağlayabiliriz. Son olarak aşağıdaki tabloda, IE ve Chrome’nin belirtilen işlemleri 100000 defa yapmak için ihtiyaç duydukları ortalama zamanı bulacaksınız… (Her işlemi 15 defa yaptım ve ortalamasını aldım)

  Internet Explorer Chrome
Standart Nesne Oluşturma 28,869 sn 5,206 sn
createElement ile Nesne Oluşturma 23,068 sn 3.790 sn
Standart Seçme (ID ile) 39.999 sn 2.545 sn
getElementByID ile Seçme (ID ile)
31.352 sn
2.529 sn
Standart Seçme (Tür ile) 30.104 sn 2.550 sn
getElementsByTagName ile Seçme (Tür) 29.848 sn 2.469 sn