Прискорення getDefinitionByName(getQualifiedClassName(obj))
понеділок, Листопад 26, 2007Якщо Ви використовуєте цей вираз:
getDefinitionByName(getQualifiedClassName(obj));
то, для прискорення виконання коду використовуйте слідуючу функцію:
import flash.utils.Proxy;
import flash.utils.getQualifiedClassName;
import flash.utils.getDefinitionByName;
import flash.system.ApplicationDomain;
function getClassDefinition(any:*):Class
{
var cls:Object = null;
if(any is Proxy){
cls = getDefinitionByName(getQualifiedClassName(any));
} else if(any is String && ApplicationDomain.currentDomain.hasDefinition(any)){
cls = getDefinitionByName(any);
} else{
cls = Object(any).constructor;
}
return cls as Class;
}
Приріст швидкості більш ніж в 6 разів ( якщо !(any is Proxy) ).
Дякую Олегові (він же a_[w]) за знайдену швидкісну блоху
Далі тест на швидкість
