From 6ce085a21ab8a66acba004044265c8323081c79d Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Fri, 10 Apr 2015 13:23:34 -0700 Subject: [PATCH] feat(benchmark): make view cache a parameter to the tree benchmark --- .../src/core/compiler/view_factory.js | 2 +- .../test/core/compiler/view_factory_spec.js | 3 --- .../test/render/dom/view/view_factory_spec.js | 3 --- modules/benchmarks/e2e_test/tree_perf.es6 | 25 ++++++++++++++++--- .../benchmarks/src/tree/tree_benchmark.html | 8 ++++++ modules/benchmarks/src/tree/tree_benchmark.js | 8 ++++-- 6 files changed, 36 insertions(+), 13 deletions(-) diff --git a/modules/angular2/src/core/compiler/view_factory.js b/modules/angular2/src/core/compiler/view_factory.js index 5ea0fbf74c..cb01d6a984 100644 --- a/modules/angular2/src/core/compiler/view_factory.js +++ b/modules/angular2/src/core/compiler/view_factory.js @@ -13,7 +13,7 @@ export const VIEW_POOL_CAPACITY = 'ViewFactory.viewPoolCapacity'; @Injectable() export class ViewFactory { _poolCapacityPerProtoView:number; - _pooledViewsPerProtoView:Map>; + _pooledViewsPerProtoView:Map>; constructor(@Inject(VIEW_POOL_CAPACITY) poolCapacityPerProtoView) { this._poolCapacityPerProtoView = poolCapacityPerProtoView; diff --git a/modules/angular2/test/core/compiler/view_factory_spec.js b/modules/angular2/test/core/compiler/view_factory_spec.js index 8614adf550..8007f2472d 100644 --- a/modules/angular2/test/core/compiler/view_factory_spec.js +++ b/modules/angular2/test/core/compiler/view_factory_spec.js @@ -27,7 +27,6 @@ export function main() { describe('caching', () => { it('should support multiple AppProtoViews', () => { - var capacity; var pv1 = createPv(); var pv2 = createPv(); var vf = createViewFactory({ capacity: 2 }); @@ -41,7 +40,6 @@ export function main() { }); it('should reuse the newest view that has been returned', () => { - var capacity; var pv = createPv(); var vf = createViewFactory({ capacity: 2 }); var view1 = vf.getView(pv); @@ -53,7 +51,6 @@ export function main() { }); it('should not add views when the capacity has been reached', () => { - var capacity; var pv = createPv(); var vf = createViewFactory({ capacity: 2 }); var view1 = vf.getView(pv); diff --git a/modules/angular2/test/render/dom/view/view_factory_spec.js b/modules/angular2/test/render/dom/view/view_factory_spec.js index 0dbe5be059..e03b489fd9 100644 --- a/modules/angular2/test/render/dom/view/view_factory_spec.js +++ b/modules/angular2/test/render/dom/view/view_factory_spec.js @@ -29,7 +29,6 @@ export function main() { describe('caching', () => { it('should support multiple RenderProtoViews', () => { - var capacity; var pv1 = createPv(); var pv2 = createPv(); var vf = createViewFactory({ capacity: 2 }); @@ -43,7 +42,6 @@ export function main() { }); it('should reuse the newest view that has been returned', () => { - var capacity; var pv = createPv(); var vf = createViewFactory({ capacity: 2 }); var view1 = vf.getView(pv); @@ -55,7 +53,6 @@ export function main() { }); it('should not add views when the capacity has been reached', () => { - var capacity; var pv = createPv(); var vf = createViewFactory({ capacity: 2 }); var view1 = vf.getView(pv); diff --git a/modules/benchmarks/e2e_test/tree_perf.es6 b/modules/benchmarks/e2e_test/tree_perf.es6 index ed91a5ce7b..50ca4674cb 100644 --- a/modules/benchmarks/e2e_test/tree_perf.es6 +++ b/modules/benchmarks/e2e_test/tree_perf.es6 @@ -6,13 +6,28 @@ describe('ng2 tree benchmark', function () { afterEach(perfUtil.verifyNoBrowserErrors); - it('should log the ng stats', function(done) { + it('should log the ng stats with viewcache', function(done) { perfUtil.runClickBenchmark({ url: URL, buttons: ['#ng2DestroyDom', '#ng2CreateDom'], - id: 'ng2.tree', + id: 'ng2.tree.create.viewcache', params: [{ name: 'depth', value: 9, scale: 'log2' + },{ + name: 'viewcache', value: 'true' + }] + }).then(done, done.fail); + }); + + it('should log the ng stats without viewcache', function(done) { + perfUtil.runClickBenchmark({ + url: URL, + buttons: ['#ng2DestroyDom', '#ng2CreateDom'], + id: 'ng2.tree.create.plain', + params: [{ + name: 'depth', value: 9, scale: 'log2' + },{ + name: 'viewcache', value: 'false' }] }).then(done, done.fail); }); @@ -24,6 +39,8 @@ describe('ng2 tree benchmark', function () { id: 'ng2.tree.update', params: [{ name: 'depth', value: 9, scale: 'log2' + },{ + name: 'viewcache', value: 'true' }] }).then(done, done.fail); }); @@ -32,7 +49,7 @@ describe('ng2 tree benchmark', function () { perfUtil.runClickBenchmark({ url: URL, buttons: ['#baselineDestroyDom', '#baselineCreateDom'], - id: 'baseline.tree', + id: 'baseline.tree.create', params: [{ name: 'depth', value: 9, scale: 'log2' }] @@ -43,7 +60,7 @@ describe('ng2 tree benchmark', function () { perfUtil.runClickBenchmark({ url: URL, buttons: ['#baselineCreateDom'], - id: 'baseline.tree', + id: 'baseline.tree.update', params: [{ name: 'depth', value: 9, scale: 'log2' }] diff --git a/modules/benchmarks/src/tree/tree_benchmark.html b/modules/benchmarks/src/tree/tree_benchmark.html index 5df56dcf6b..087af0ae94 100644 --- a/modules/benchmarks/src/tree/tree_benchmark.html +++ b/modules/benchmarks/src/tree/tree_benchmark.html @@ -7,6 +7,14 @@ Depth:
+ Use Viewcache: + + +
diff --git a/modules/benchmarks/src/tree/tree_benchmark.js b/modules/benchmarks/src/tree/tree_benchmark.js index efa2eaa2af..004e063a48 100644 --- a/modules/benchmarks/src/tree/tree_benchmark.js +++ b/modules/benchmarks/src/tree/tree_benchmark.js @@ -24,7 +24,7 @@ import {ReflectionCapabilities} from 'angular2/src/reflection/reflection_capabil import {DOM} from 'angular2/src/dom/dom_adapter'; import {isPresent} from 'angular2/src/facade/lang'; import {window, document, gc} from 'angular2/src/facade/browser'; -import {getIntParameter, bindAction} from 'angular2/src/test_lib/benchmark_util'; +import {getIntParameter, getStringParameter, bindAction} from 'angular2/src/test_lib/benchmark_util'; import {XHR} from 'angular2/src/services/xhr'; import {XHRImpl} from 'angular2/src/services/xhr_impl'; @@ -42,7 +42,11 @@ import * as rvf from 'angular2/src/render/dom/view/view_factory'; import {Inject, bind} from 'angular2/di'; function createBindings():List { - return [bind(VIEW_POOL_CAPACITY).toValue(100000)]; + var viewCacheCapacity = getStringParameter('viewcache') == 'true' ? 10000 : 1; + return [ + bind(rvf.VIEW_POOL_CAPACITY).toValue(viewCacheCapacity), + bind(VIEW_POOL_CAPACITY).toValue(viewCacheCapacity) + ]; } function setupReflector() {