Why is jQuery $ .each so fast?

I need to parse a lot of XML data for objects. I thought of three ways to get this XML object:

XML

<myXml>
  <tag1 val = "someVal"/>
  <tag2 val = "someVal"/>
  <tag3 val = "someVal"/>
</myXml>

Option 1: using .find ()

var xml = getMyXml();
var myObj = {
   1 : xml.find('tag1').attr('val'),
   2 : xml.find('tag2').attr('val'),
   3 : xml.find('tag3').attr('val'),
}

Option 2: using .each ()

var xml = getMyXml();
var myObj = {
   1 : 'tag1',
   2 : 'tag2',
   3 : 'tag3',
}
$.each(myObj, function(i,e){
  myObj[i] = xml.find(e).attr('val');
});

Option 3: Array

var xml = getMyXml();
var myArr = ['tag1','tag2','tag3']
var myObj = {};
for(var i = 0; i < myArr.length; i++){
 myObj[i] = xml.find(myArr[i]).attr('val');
}

Using this function perf http://jsperf.com/each-vs-arraysdfsdf option 2 was 82% faster than both other options. Why?

+4
source share
1 answer

jquery, javascript , . jquery , .

var len = digitalArr.length; //Cache the length
var i = 0;
for (; i < len ; i++) {
  obj[i] = xmlobj.getElementsByTagName(''+digitalArr[i]+'')[0].getAttribute('val');
}

jsperf

+1

Source: https://habr.com/ru/post/1584310/


All Articles