function _createAppInjector(appComponentType: Type, bindings: List<Binding>, zone: VmTurnZone): Injector { if (isBlank(_rootInjector)) _rootInjector = new Injector(_rootBindings); var mergedBindings = isPresent(bindings) ? ListWrapper.concat(_injectorBindings(appComponentType), bindings) : _injectorBindings(appComponentType); ListWrapper.push(mergedBindings, bind(VmTurnZone).toValue(zone)); return _rootInjector.createChild(mergedBindings); }
export function main() { BrowserDomAdapter.makeCurrent(); var iterations = getIntParameter('iterations'); setupReflector(); var bindings = [A, B, C, D, E]; var injector = new Injector(bindings); var D_KEY = Key.get(D); var E_KEY = Key.get(E); var childInjector = injector. createChild([]). createChild([]). createChild([]). createChild([]). createChild([]); function getByToken () { for (var i = 0; i < iterations; ++i) { injector.get(D); injector.get(E); } } function getByKey() { for (var i = 0; i < iterations; ++i) { injector.get(D_KEY); injector.get(E_KEY); } } function getChild () { for (var i = 0; i < iterations; ++i) { childInjector.get(D); childInjector.get(E); } } function instantiate () { for (var i = 0; i < iterations; ++i) { var child = injector.createChild([E]); child.get(E); } } bindAction('#getByToken', getByToken); bindAction('#getByKey', getByKey); bindAction('#getChild', getChild); bindAction('#instantiate', instantiate); }