+
+ loading...
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/benchmarks/src/views/index.ts b/modules/benchmarks/src/views/index.ts
new file mode 100644
index 0000000000..a969a01263
--- /dev/null
+++ b/modules/benchmarks/src/views/index.ts
@@ -0,0 +1,14 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+import {enableProdMode} from '@angular/core';
+import {platformBrowser} from '@angular/platform-browser';
+
+import {ViewsBenchmarkModuleNgFactory} from './views-benchmark.ngfactory';
+
+enableProdMode();
+platformBrowser().bootstrapModuleFactory(ViewsBenchmarkModuleNgFactory);
\ No newline at end of file
diff --git a/modules/benchmarks/src/views/views-benchmark.ts b/modules/benchmarks/src/views/views-benchmark.ts
new file mode 100644
index 0000000000..5984d34480
--- /dev/null
+++ b/modules/benchmarks/src/views/views-benchmark.ts
@@ -0,0 +1,67 @@
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {ChangeDetectorRef, Component, Directive, NgModule, TemplateRef, ViewContainerRef} from '@angular/core';
+import {BrowserModule} from '@angular/platform-browser';
+
+@Directive({selector: '[viewManipulationDirective]', exportAs: 'vm'})
+export class ViewManipulationDirective {
+ constructor(private _vcRef: ViewContainerRef, private _tplRef: TemplateRef) {}
+
+ create(no: number) {
+ for (let i = 0; i < no; i++) {
+ this._vcRef.createEmbeddedView(this._tplRef);
+ }
+ }
+
+ clear() { this._vcRef.clear(); }
+}
+
+@Component({
+ selector: 'benchmark-root',
+ template: `
+
+
+
+
+
+
+
+
+
text
+
+
+ `
+})
+export class ViewsBenchmark {
+ items: number[]|undefined = undefined;
+
+ constructor(private _cdRef: ChangeDetectorRef) {}
+
+ create(vm: ViewManipulationDirective) { vm.create(1000); }
+
+ destroy(vm: ViewManipulationDirective) { vm.clear(); }
+
+ check() {
+ for (let i = 0; i < 10000; i++) {
+ this._cdRef.detectChanges();
+ }
+ }
+}
+
+@NgModule({
+ declarations: [ViewsBenchmark, ViewManipulationDirective],
+ imports: [
+ CommonModule,
+ BrowserModule,
+ ],
+ bootstrap: [ViewsBenchmark]
+})
+export class ViewsBenchmarkModule {
+}
\ No newline at end of file