@@ -8,7 +8,7 @@ import {TemplateLoader} from 'core/compiler/template_loader';
88import  { LifeCycle }  from  'core/life_cycle/life_cycle' ; 
99
1010import  { reflector }  from  'reflection/reflection' ; 
11- import  { DOM ,  document ,  Element }  from  'facade/dom' ; 
11+ import  { DOM ,  document ,  window ,   Element }  from  'facade/dom' ; 
1212import  { isPresent }  from  'facade/lang' ; 
1313
1414var  MAX_DEPTH  =  9 ; 
@@ -135,6 +135,23 @@ export function main() {
135135 changeDetector . detectChanges ( ) ; 
136136 } 
137137
138+  function  profile ( create ,  destroy ,  name )  { 
139+  return  function ( _ )  { 
140+  window . console . profile ( name ) ; 
141+  var  duration  =  0 ; 
142+  var  count  =  0 ; 
143+  while ( duration  <  5000 )  { 
144+  var  start  =  window . performance . now ( ) ; 
145+  create ( _ ) ; 
146+  duration  +=  window . performance . now ( )  -  start ; 
147+  destroy ( _ ) ; 
148+  count ++ ; 
149+  } 
150+  window . console . profileEnd ( name ) ; 
151+  window . console . log ( `Iterations: ${ count } ${ duration  /  count }  ) ; 
152+  } ; 
153+  } 
154+ 
138155 function  ng2CreateDom ( _ )  { 
139156 var  values  =  count ++  %  2  ==  0  ?
140157 [ '0' ,  '1' ,  '2' ,  '3' ,  '4' ,  '5' ,  '6' ,  '7' ,  '8' ,  '9' ,  '*' ]  :
@@ -144,12 +161,16 @@ export function main() {
144161 changeDetector . detectChanges ( ) ; 
145162 } 
146163
164+  function  noop ( )  { } 
165+ 
147166 function  initNg2 ( )  { 
148167 bootstrap ( AppComponent ) . then ( ( injector )  =>  { 
149168 changeDetector  =  injector . get ( ChangeDetector ) ; 
150169 app  =  injector . get ( AppComponent ) ; 
151170 DOM . on ( DOM . querySelector ( document ,  '#ng2DestroyDom' ) ,  'click' ,  ng2DestroyDom ) ; 
152171 DOM . on ( DOM . querySelector ( document ,  '#ng2CreateDom' ) ,  'click' ,  ng2CreateDom ) ; 
172+  DOM . on ( DOM . querySelector ( document ,  '#ng2UpdateDomProfile' ) ,  'click' ,  profile ( ng2CreateDom ,  noop ,  'ng2-update' ) ) ; 
173+  DOM . on ( DOM . querySelector ( document ,  '#ng2CreateDomProfile' ) ,  'click' ,  profile ( ng2CreateDom ,  ng2DestroyDom ,  'ng2-create' ) ) ; 
153174 } ) ; 
154175 } 
155176
@@ -170,6 +191,8 @@ export function main() {
170191 DOM . appendChild ( DOM . querySelector ( document ,  'baseline' ) ,  baselineRootTreeComponent . element ) ; 
171192 DOM . on ( DOM . querySelector ( document ,  '#baselineDestroyDom' ) ,  'click' ,  baselineDestroyDom ) ; 
172193 DOM . on ( DOM . querySelector ( document ,  '#baselineCreateDom' ) ,  'click' ,  baselineCreateDom ) ; 
194+  DOM . on ( DOM . querySelector ( document ,  '#baselineUpdateDomProfile' ) ,  'click' ,  profile ( baselineCreateDom ,  noop ,  'baseline-update' ) ) ; 
195+  DOM . on ( DOM . querySelector ( document ,  '#baselineCreateDomProfile' ) ,  'click' ,  profile ( baselineCreateDom ,  baselineDestroyDom ,  'baseline-create' ) ) ; 
173196 } 
174197
175198 initNg2 ( ) ; 
0 commit comments