рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛


рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдп jQuery рдФрд░ Google рдмрдВрдж рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рддреБрд▓рдирд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖ рдерд╛ред рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЧрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереАред рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬреНрдЮрд╛рди рдиреЗ рд╣рдореЗрдВ рдзрд╛рд░рдгрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдереЗ, рдФрд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╣рдмрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛ред

рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧрдарди


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреБрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ "рдкрд░реАрдХреНрд╖рдг рдЗрдВрдЬрди" рдмрдирд╛рдирд╛ рдерд╛ - рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛ рдореБрдЭреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рдереАрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдирдВрдЧреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдХ рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди (рдЪрд▓реЛ рдЗрд╕реЗ рджреЗрд╢реА-рдХреЙрд▓ рдХрд╣рддреЗ рд╣реИрдВ) рдФрд░ рдПрдХреНрд╕рдЯреАрдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рддреБрд▓рдирд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдИ рдФрд░ рдХреБрдЫ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдм рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХрд╛ рднрдВрдбрд╛рд░ рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдХреЛрдИ рдЪрд╛рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдЖрджрд┐рдо рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдк рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ - рдкреНрд░рддрд┐ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛:
runTest = function(test, count){ var start = new Date().getTime(); for(var i=1;i<count;i++) test(); var end = new Date().getTime(); var time = end - start; return count/time; } 

рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рд▓реЗрддрд╛ рд╣реИ:
 runGroup = function(label, tests, count){ var res = {}; for(var key in tests) res[key] = runTest(tests[key], count); saveResult(label, res); } 

рдЗрд╕рдиреЗ рд╣рдореЗрдВ "рджреГрд╢реНрдп" рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА:
 runGroup(' ',{ "native": function1, "jQuery": function2, "closure": function3, "extJS": function4 }) 

рдЦреИрд░, рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдФрд╕рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреГрд╢реНрдп рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рдкреНрд▓реЗрдЯ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдиреАрдЪреЗ рд╣реЛрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЪрд╛рд▓рди


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЪреБрдирд╛рд╡ рд╡рд┐рд╖рдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдкрд░рд┐рдЪрд╛рд▓рди рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЬрдм рдПрдирд┐рдореЗрдЯреЗрдб рд╡реЗрдм рдкреЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ред рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рднреА, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ - рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдиреЗ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдПрдХ рдЖрдЗрдЯрдо рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ


рд╢рд╛рдпрдж рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рднреА рд╡реЗрдм рдкреЗрдЬ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
 document.getElementById('id'); // native goog.dom.getElement('id'); // closure $('#id'); // jQuery Ext.get('id'); // ExtJS 


рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЦреЛрдЬ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдзрд┐рдХ "рдкрд░рд┐рд╖реНрдХреГрдд" рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЦреЛрдЬ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛:
 document.getElementsByClassName('class'); // native goog.dom.getElementByClass('class'); // closure $('.class'); // jQuery Ext.select('.class'); // ExtJS 


рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдкреГрд╖реНрда рдореЗрдВ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╢рд░реАрд░ рдореЗрдВ рд╕реАрдзреЗ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдкреИрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдЙрдирдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реИ:
 goog.dom.appendChild(document.body, goog.dom.createDom('span',{class:'testspan'})); // closure $(document.body).append($('<span class="testspan">')); // jQuery Ext.DomHelper.append(document.body, {tag : 'span', cls : 'testspan'}); // ExtJS // native var spn = document.createElement('span'); spn.setAttribute('class','testspan'); document.body.appendChild(spn); 


рддрддреНрд╡ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛;


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рддрддреНрд╡ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЪреБрдирд╛ (рддрддреНрд╡ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдХреЗ рдмрд╛рд╣рд░ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛):
 nElement.getAttribute('class').split(' '); // native goog.dom.classes.get(gElement); // closure jElement.attr('class').split(' '); // jQuery eElement.getAttribute('class').split(' '); // ExtJS 


рддрддреНрд╡ рд╡рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди


рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЯреЙрдЧрд▓ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдВрдЧреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдореБрдЭреЗ рдПрдХ рдкреВрд░реА рдЧрдбрд╝рдмрдбрд╝ рд▓рд┐рдЦрдиреА рдереА:
 goog.dom.classes.toggle(gElement, 'testToggle'); // closure jElement.toggleClass('testToggle'); // jQuery var classes = eElement.toggleCls('testToggle'); // ExtJS // native var classes = nElement.className.split(' '); var ind = classes.indexOf('testToggle'); if(ind==-1) classes.push('testToggle'); else classes.splice(ind,1); nElement.className = classes.join(" "); 


рдЖрдЗрдЯрдо рд╢реИрд▓реА рдмрджрд▓реЗрдВ


рдЦреИрд░, рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдСрдкрд░реЗрд╢рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ:
 nElement.style.backgroundColor = '#aaa'; // native goog.style.setStyle(gElement, {'background-color': '#aaa'}); // closure jElement.css({'background-color': '#aaa'}); // jQuery eElement.setStyle('backgroundColor','#aaa'); // ExtJS 


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрд╖реНрда рдорд┐рд▓рд╛, рдЬрд┐рд╕рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕реА CDN (jQuery рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 1.10.2, ExtJs рдХреЗ рд▓рд┐рдП 4.2.0 рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рдВрдХ рд╕рдВрд╕реНрдХрд░рдг) рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдИ рднреА рдЗрд╕реЗ html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХреБрдЫ рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рд▓рдВрдмрд╛ HTML
 <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script src='http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js'></script> <script src="http://cdn.sencha.com/ext/gpl/4.2.0/ext-all.js"></script> <script> goog.require('goog.dom'); goog.require('goog.dom.classes'); goog.require('goog.style'); </script> <style> table{border-collapse:collapse;} th {font-size:120%; } td {border: solid black 1px; width: 180px; height: 60px; text-align: center; } .rowlabel {width: 120px; text-align: left; background-color: beige;} .avg {font-weight: bold; font-size:120%; color: darkblue;} </style> <title>Benchmark</title> </head> <body> <div id="testid" class="testclass"></div> <button onclick="getBenchmark()">Run</button> <table id="result"></table> </body> </html> <script> var runCount = 4; //       var testSize = 1000; //      // ... getBenchmark = function(){ for(var i = 0;i<runCount;i++) allTests(); showResults(); } allTests = function(){ //        var nElement = document.getElementById('testid'); var gElement = goog.dom.getElement('testid'); var jElement = jQuery('#testid'); var eElement = Ext.get('testid'); //    runGroup('Id lookup',{ "native": function(){var element = document.getElementById('testid');}, "closure": function(){var element = goog.dom.getElement('testid');}, "jQuery": function(){var element = jQuery('#testid');}, "ExtJS": function(){var element = Ext.get('testid');} }, 500*testSize); //    runGroup('Class lookup',{ "native": function(){var elements = document.getElementsByClassName('testclass');}, "closure": function(){var elements = goog.dom.getElementByClass('testclass');}, "jQuery": function(){var elements = jQuery('.testclass');}, "ExtJS": function(){var elements = Ext.select('.testclass');} }, 200*testSize); //   runGroup('Append span',{ "jQuery": function(){jQuery(document.body).append(jQuery('<span class="testspan">'));}, "closure": function(){goog.dom.appendChild(document.body, goog.dom.createDom('span',{class:'testspan'}));}, "ExtJS": function(){Ext.DomHelper.append(document.body, {tag : 'span', cls : 'testspan'});}, "native": function(){ var spn = document.createElement('span'); spn.setAttribute('class','testspan'); document.body.appendChild(spn); } }, testSize); //     jQuery('.testspan').remove(); //    runGroup('Read classes',{ "native": function(){var classes = nElement.getAttribute('class').split(' ');}, "closure": function(){var classes = goog.dom.classes.get(gElement);}, "jQuery": function(){var classes = jElement.attr('class').split(' ');}, "ExtJS": function(){var classes = eElement.getAttribute('class').split(' ');} }, 100*testSize); //    runGroup('Toggle class',{ "closure": function(){goog.dom.classes.toggle(gElement, 'testToggle');}, "jQuery": function(){jElement.toggleClass('testToggle');}, "ExtJS": function(){var classes = eElement.toggleCls('testToggle');}, "native": function(){ var classes = nElement.className.split(' '); var ind = classes.indexOf('testToggle'); if(ind==-1) classes.push('testToggle'); else classes.splice(ind,1); nElement.className = classes.join(" "); } }, 50*testSize); //  css- runGroup('Styling',{ "native": function(){nElement.style.backgroundColor = '#aaa';}, "closure": function(){goog.style.setStyle(gElement, {'background-color': '#aaa'});}, "jQuery": function(){jElement.css({'background-color': '#aaa'});}, "ExtJS": function(){eElement.setStyle('backgroundColor','#aaa');} }, 50*testSize); } var savedResults = {}; var tests = []; //   showResults = function(){ jQuery('#result').empty(); //   -    var str = '<tr><th></th>' for(var i=0;i<tests.length;i++){ str += '<th>' + tests[i] + '</th>'; } str += '</tr>'; for(var label in savedResults){ //      str += '<tr><td class="rowlabel">'+label+'</td>' for(var i=0;i<tests.length;i++){ str += '<td>'; var key = tests[i]; var res = savedResults[label][key]; if(res){ var detail = ''; var total = 0; for(var k=0;k<res.length;k++){ if(k==0) detail += Math.round(res[k]); else detail += ', ' + Math.round(res[k]); total += res[k]; } if(res.length > 0) total = total / res.length; str += '<span class="avg">'+Math.round(total)+'</span><br>'+detail; } str+='</td>'; } } jQuery('#result').append(str); } //   saveResult = function(label, result){ if(!savedResults[label]) savedResults[label] ={}; for(var key in result){ if(tests.indexOf(key)==-1) tests.push(key); if(!savedResults[label][key]) savedResults[label][key] = []; savedResults[label][key].push(result[key]); } } //     runGroup = function(label, tests, count){ var res = {}; for(var key in tests) res[key] = runTest(tests[key], count); saveResult(label, res); } //      runTest = function(test, count){ var start = new Date().getTime(); for(var i=1;i<count;i++) test(); var end = new Date().getTime(); var time = end - start; return count/time; } </script> 



рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо


рдореИрдВрдиреЗ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рддрд╣рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХреАред рдиреАрдЪреЗ рджреА рдЧрдИ рдЧреЛрд▓рд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкреНрд░рддрд┐ рдСрдкрд░реЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛)ред (рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдореЗрдВ рдмреЛрд▓реНрдб рдореЗрдВ рдЪрд╛рд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорд╛рди)ред

рдХреНрд░реЛрдо


рд╕рдВрд╕реНрдХрд░рдг 28.0.1500.72


рдУрдкреЗрд░рд╛


рд╕рдВрд╕реНрдХрд░рдг 12.10.1652


рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕


рд╕рдВрд╕реНрдХрд░рдг 22.0


рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░


рд╕рдВрд╕реНрдХрд░рдг 9.0.8112.16421


рдкрд░рд┐рдгрд╛рдо


рддреБрд▓рдирд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЪрд╛рд░реНрдЯ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХреНрд░реЛрдо рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдП рдЧрдП рдереЗ рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдореВрд╣ рдПрдХ рд╣реА рдЪрд╛рд░реНрдЯ рдкрд░ рдлрд┐рдЯ рд╣реЛрдВ)ред рдЪрд╛рд░реНрдЯ рдкрд░ рдЬрд┐рддрдиреА рд▓рдВрдмреА рдмрд╛рд░, рдЙрддрдиреА рддреЗрдЬрд╝:


рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, jQuery рдкрд░ DOM рдХрд╛ рд╣реЗрд░рдлреЗрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдХреНрд░рдо рд╕реЗ рдЕрдВрддрд░ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛ред рд▓реЗрдХрд┐рди jQuery рдФрд░ рдХреНрд▓реЛрдЬрд░ рджреЛрдиреЛрдВ рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВ (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ extJS рд╕реЗ рд╣реАрди рд╣реИрдВ, рдЬреЛ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, DOM рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж jQuery рдореЗрдВ рдореЗрд░рд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреБрдЫ рд╣рдж рддрдХ рд╣рд┐рд▓ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рджреВрд░рдЧрд╛рдореА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП - рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд╛рдореВрд╣рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рд╛рдзрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдХрд╛рд░реНрдпред рдХреЛрдИ рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЛрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рддрд░реАрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реИрдкрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╣рдореЗрд╢рд╛ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles