angular/modules/benchmarks_external/src/compiler/compiler_benchmark.dart
Tobias Bosch 05ffdc9b44 refactor(build): explicitly mention src folder in imports
Export files are now directly under the module folder,
e.g. `core/core.js`. With this, an import like `core/core`
won’t need a path mapping (e.g. via `System.paths`) any more.
This adds the `src` folder to all other import statements as well.
2015-02-05 11:55:48 -08:00

121 lines
2.2 KiB
Dart

// compiler benchmark in AngularDart 1.x
library compiler_benchmark_ng10;
import 'package:angular/angular.dart';
import 'package:angular/application_factory.dart';
import 'dart:html';
import 'package:e2e_test_lib/src/benchmark_util.dart';
main() {
var count = getIntParameter('elements');
var m = new Module()
..bind(Dir0)
..bind(Dir1)
..bind(Dir2)
..bind(Dir3)
..bind(Dir4);
var templateWithBindings = loadTemplate('templateWithBindings', count);
var templateNoBindings = loadTemplate('templateWithBindings', count);
final injector = applicationFactory().addModule(m).run();
final compiler = injector.get(Compiler);
final directiveMap = injector.get(DirectiveMap);
compileWithBindings() {
final cloned = templateWithBindings.clone(true);
compiler([cloned], directiveMap);
}
compileNoBindings() {
final cloned = templateNoBindings.clone(true);
compiler([cloned], directiveMap);
}
bindAction('#compileWithBindings', compileWithBindings);
bindAction('#compileNoBindings', compileNoBindings);
}
loadTemplate(templateId, repeatCount) {
String result = '';
var content = document.querySelector("#${templateId}").innerHtml;
for (var i=0; i<repeatCount; i++) {
result += content;
}
return createTemplate(result.replaceAll(new RegExp(r'[\[\]]'), ''));
}
class IdentitySanitizer implements NodeTreeSanitizer {
void sanitizeTree(Node node) {}
}
createTemplate(String html) {
var div = document.createElement('div');
div.setInnerHtml(html, treeSanitizer:new IdentitySanitizer());
return div;
}
@Decorator(
selector: '[dir0]',
map: const {
'attr0': '=>prop'
}
)
class Dir0 {
Object prop;
}
@Decorator(
selector: '[dir1]',
map: const {
'attr1': '=>prop'
}
)
class Dir1 {
Object prop;
constructor(Dir0 dir0) {
}
}
@Decorator(
selector: '[dir2]',
map: const {
'attr2': '=>prop'
}
)
class Dir2 {
Object prop;
constructor(Dir1 dir1) {
}
}
@Decorator(
selector: '[dir3]',
map: const {
'attr3': '=>prop'
}
)
class Dir3 {
Object prop;
constructor(Dir2 dir2) {
}
}
@Decorator(
selector: '[dir4]',
map: const {
'attr4': '=>prop'
}
)
class Dir4 {
Object prop;
constructor(Dir3 dir3) {
}
}