2014-10-14 16:00:35 -04:00
|
|
|
import {Injector} from 'di/di';
|
|
|
|
import {ProtoElementInjector} from 'core/compiler/element_injector';
|
|
|
|
|
2014-10-27 16:09:10 -04:00
|
|
|
var ITERATIONS = 20000;
|
2014-10-14 16:00:35 -04:00
|
|
|
var count = 0;
|
|
|
|
|
|
|
|
export function run () {
|
|
|
|
var appInjector = new Injector([]);
|
|
|
|
|
|
|
|
var bindings = [A, B, C];
|
|
|
|
var proto = new ProtoElementInjector(null, bindings, []);
|
2014-10-16 15:10:17 -04:00
|
|
|
var ei = proto.instantiate({view:null});
|
2014-10-14 16:00:35 -04:00
|
|
|
|
2014-10-27 16:09:10 -04:00
|
|
|
for (var i = 0; i < ITERATIONS; ++i) {
|
2014-10-14 16:00:35 -04:00
|
|
|
ei.clearDirectives();
|
|
|
|
ei.instantiateDirectives(appInjector);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class A {
|
|
|
|
constructor() {
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class B {
|
|
|
|
constructor() {
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class C {
|
|
|
|
constructor(a:A, b:B) {
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|