From f1cfddf6d6a0a6cb1957e4fa9fea9196dfc7f6c6 Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Thu, 6 Oct 2016 08:37:37 -0700 Subject: [PATCH] refactor(benchmarks): add `index_aot` to support AoT bootstrap. (#12105) Note: This only make sure it can compile the AoT version, but does not yet use it in e2e tests. --- .../integrationtest/benchmarks/README.md | 6 +++ .../integrationtest/tsconfig.json | 12 +++++- modules/benchmarks/README.md | 5 +++ .../src/largetable/ng2/index_aot.ts | 8 ++++ .../src/largetable/ng2_switch/index_aot.ts | 8 ++++ modules/benchmarks/src/tree/ng2/index_aot.ts | 8 ++++ .../benchmarks/src/tree/ng2_switch/index.ts | 40 +++---------------- .../src/tree/ng2_switch/index_aot.ts | 8 ++++ .../benchmarks/src/tree/ng2_switch/init.ts | 32 +++++++++++++++ modules/tsconfig.json | 1 + scripts/ci-lite/offline_compiler_test.sh | 1 + 11 files changed, 93 insertions(+), 36 deletions(-) create mode 100644 modules/@angular/compiler-cli/integrationtest/benchmarks/README.md create mode 100644 modules/benchmarks/src/largetable/ng2/index_aot.ts create mode 100644 modules/benchmarks/src/largetable/ng2_switch/index_aot.ts create mode 100644 modules/benchmarks/src/tree/ng2/index_aot.ts create mode 100644 modules/benchmarks/src/tree/ng2_switch/index_aot.ts create mode 100644 modules/benchmarks/src/tree/ng2_switch/init.ts diff --git a/modules/@angular/compiler-cli/integrationtest/benchmarks/README.md b/modules/@angular/compiler-cli/integrationtest/benchmarks/README.md new file mode 100644 index 0000000000..14e69f8ff6 --- /dev/null +++ b/modules/@angular/compiler-cli/integrationtest/benchmarks/README.md @@ -0,0 +1,6 @@ +# Overview + +This folder will be filled with the benchmark sources +so that we can do offline compilation for them. + + diff --git a/modules/@angular/compiler-cli/integrationtest/tsconfig.json b/modules/@angular/compiler-cli/integrationtest/tsconfig.json index 01090a2570..054b56c206 100644 --- a/modules/@angular/compiler-cli/integrationtest/tsconfig.json +++ b/modules/@angular/compiler-cli/integrationtest/tsconfig.json @@ -15,5 +15,15 @@ "declaration": true, "lib": ["es6", "dom"], "baseUrl": "." - } + }, + + "files": [ + "src/module", + "src/bootstrap", + "test/all_spec", + "benchmarks/src/tree/ng2/index_aot.ts", + "benchmarks/src/tree/ng2_switch/index_aot.ts", + "benchmarks/src/largetable/ng2/index_aot.ts", + "benchmarks/src/largetable/ng2_switch/index_aot.ts" + ] } diff --git a/modules/benchmarks/README.md b/modules/benchmarks/README.md index acc3ec72a4..266e7a0a51 100644 --- a/modules/benchmarks/README.md +++ b/modules/benchmarks/README.md @@ -22,3 +22,8 @@ $ ./node_modules/.bin/protractor protractor-perf.conf.js --specs=dist/all/benchm Options for protractor with `protractor-perf.conf.js`: - `--bundles=true`: use prebuilt bundles - `--ng-help`: show all available options + +## Compile *_aot.ts files + +These files are compiled as part of the compiler_cli integration tests. +See `@angular/compile_cli/integrationtest/tsconfig.json` diff --git a/modules/benchmarks/src/largetable/ng2/index_aot.ts b/modules/benchmarks/src/largetable/ng2/index_aot.ts new file mode 100644 index 0000000000..9c4e49de2e --- /dev/null +++ b/modules/benchmarks/src/largetable/ng2/index_aot.ts @@ -0,0 +1,8 @@ +import {enableProdMode} from '@angular/core'; +import {platformBrowser} from '@angular/platform-browser'; + +import {init} from './init'; +import {AppModuleNgFactory} from './table.ngfactory'; + +enableProdMode(); +platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then(init); diff --git a/modules/benchmarks/src/largetable/ng2_switch/index_aot.ts b/modules/benchmarks/src/largetable/ng2_switch/index_aot.ts new file mode 100644 index 0000000000..9c4e49de2e --- /dev/null +++ b/modules/benchmarks/src/largetable/ng2_switch/index_aot.ts @@ -0,0 +1,8 @@ +import {enableProdMode} from '@angular/core'; +import {platformBrowser} from '@angular/platform-browser'; + +import {init} from './init'; +import {AppModuleNgFactory} from './table.ngfactory'; + +enableProdMode(); +platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then(init); diff --git a/modules/benchmarks/src/tree/ng2/index_aot.ts b/modules/benchmarks/src/tree/ng2/index_aot.ts new file mode 100644 index 0000000000..27f907ed17 --- /dev/null +++ b/modules/benchmarks/src/tree/ng2/index_aot.ts @@ -0,0 +1,8 @@ +import {enableProdMode} from '@angular/core'; +import {platformBrowser} from '@angular/platform-browser'; + +import {init} from './init'; +import {AppModuleNgFactory} from './tree.ngfactory'; + +enableProdMode(); +platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then(init); diff --git a/modules/benchmarks/src/tree/ng2_switch/index.ts b/modules/benchmarks/src/tree/ng2_switch/index.ts index dd38964858..46623a157e 100644 --- a/modules/benchmarks/src/tree/ng2_switch/index.ts +++ b/modules/benchmarks/src/tree/ng2_switch/index.ts @@ -1,40 +1,10 @@ -import {ApplicationRef, enableProdMode} from '@angular/core'; +import {enableProdMode} from '@angular/core'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; -import {bindAction, profile} from '../../util'; -import {buildTree, emptyTree} from '../util'; - -import {AppModule, TreeComponent} from './tree'; +import {init} from './init'; +import {AppModule} from './tree'; export function main() { - var tree: TreeComponent; - var appRef: ApplicationRef; - - function destroyDom() { - tree.data = emptyTree; - appRef.tick(); - } - - function createDom() { - tree.data = buildTree(); - appRef.tick(); - } - - function noop() {} - - function init() { - enableProdMode(); - platformBrowserDynamic().bootstrapModule(AppModule).then((ref) => { - const injector = ref.injector; - appRef = injector.get(ApplicationRef); - - tree = appRef.components[0].instance; - bindAction('#destroyDom', destroyDom); - bindAction('#createDom', createDom); - bindAction('#updateDomProfile', profile(createDom, noop, 'update')); - bindAction('#createDomProfile', profile(createDom, destroyDom, 'create')); - }); - } - - init(); + enableProdMode(); + platformBrowserDynamic().bootstrapModule(AppModule).then(init); } diff --git a/modules/benchmarks/src/tree/ng2_switch/index_aot.ts b/modules/benchmarks/src/tree/ng2_switch/index_aot.ts new file mode 100644 index 0000000000..27f907ed17 --- /dev/null +++ b/modules/benchmarks/src/tree/ng2_switch/index_aot.ts @@ -0,0 +1,8 @@ +import {enableProdMode} from '@angular/core'; +import {platformBrowser} from '@angular/platform-browser'; + +import {init} from './init'; +import {AppModuleNgFactory} from './tree.ngfactory'; + +enableProdMode(); +platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then(init); diff --git a/modules/benchmarks/src/tree/ng2_switch/init.ts b/modules/benchmarks/src/tree/ng2_switch/init.ts new file mode 100644 index 0000000000..280c9b0ca3 --- /dev/null +++ b/modules/benchmarks/src/tree/ng2_switch/init.ts @@ -0,0 +1,32 @@ +import {ApplicationRef, NgModuleRef} from '@angular/core'; + +import {bindAction, profile} from '../../util'; +import {buildTree, emptyTree} from '../util'; + +import {AppModule, TreeComponent} from './tree'; + +export function init(moduleRef: NgModuleRef) { + var tree: TreeComponent; + var appRef: ApplicationRef; + + function destroyDom() { + tree.data = emptyTree; + appRef.tick(); + } + + function createDom() { + tree.data = buildTree(); + appRef.tick(); + } + + function noop() {} + + const injector = moduleRef.injector; + appRef = injector.get(ApplicationRef); + + tree = appRef.components[0].instance; + bindAction('#destroyDom', destroyDom); + bindAction('#createDom', createDom); + bindAction('#updateDomProfile', profile(createDom, noop, 'update')); + bindAction('#createDomProfile', profile(createDom, destroyDom, 'create')); +} diff --git a/modules/tsconfig.json b/modules/tsconfig.json index 550608e1d4..955827b3f6 100644 --- a/modules/tsconfig.json +++ b/modules/tsconfig.json @@ -27,6 +27,7 @@ "angular2", "benchmarks/e2e_test/old", "benchmarks/src/old", + "benchmarks/src/**/index_aot.ts", "benchmarks_external", "payload_tests", "rollup-test", diff --git a/scripts/ci-lite/offline_compiler_test.sh b/scripts/ci-lite/offline_compiler_test.sh index bc3ffdac5c..239f548902 100755 --- a/scripts/ci-lite/offline_compiler_test.sh +++ b/scripts/ci-lite/offline_compiler_test.sh @@ -21,6 +21,7 @@ TMPDIR=${TMPDIR:-.} readonly TMP=$TMPDIR/e2e_test.$(date +%s) mkdir -p $TMP cp -R -v modules/@angular/compiler-cli/integrationtest/* $TMP +cp -R -v modules/benchmarks $TMP # Try to use the same versions as angular, in particular, this will # cause us to install the same rxjs version. cp -v package.json $TMP