Оператор in в кілька разів швидше hasOwnProperty()
п’ятниця, Грудень 7, 2007Олег (він же a_[w]) потішив іще однією швидкісною блохою:
var obj:Object = {p:true};
var r:Boolean = false;
var pn:String = 'p';
var t:Number = getTimer();
var i:uint;
for(i=0; i<1000000; i++) r = obj.hasOwnProperty('p');
trace("hasOwnProperty('p'): " + (getTimer()-t)); // 275
t = getTimer();
for(i=0; i<1000000; i++) r = obj.hasOwnProperty(pn);
trace("hasOwnProperty(pn): " + (getTimer()-t)); // 271
t = getTimer();
for(i=0; i<1000000; i++) r = 'p' in obj;
trace("'p' in : " + (getTimer()-t)); // 96
t = getTimer();
for(i=0; i<1000000; i++) r = pn in obj;
trace("pn in : " + (getTimer()-t)); // 97
Результат: майже в 3 рази.
