1+ // tree benchmark in React
2+ import { getIntParameter , bindAction } from 'angular2/src/test_lib/benchmark_util' ;
3+ import React from './react.min' ;
4+
5+ var TreeComponent = React . createClass ( {
6+ displayName : 'TreeComponent' ,
7+
8+ render : function ( ) {
9+ var treeNode = this . props . treeNode ;
10+
11+ var left = null ;
12+ if ( treeNode . left ) {
13+ left = React . createElement (
14+ "span" ,
15+ { } ,
16+ [ React . createElement ( TreeComponent , { treeNode : treeNode . left } , "" ) ]
17+ )
18+ }
19+
20+ var right = null ;
21+ if ( treeNode . right ) {
22+ right = React . createElement (
23+ "span" ,
24+ { } ,
25+ [ React . createElement ( TreeComponent , { treeNode : treeNode . right } , "" ) ]
26+ )
27+ }
28+
29+ var span = React . createElement ( "span" , { } , [
30+ " " + treeNode . value ,
31+ left ,
32+ right
33+ ] ) ;
34+
35+ return (
36+ React . createElement ( "tree" , { } , [ span ] )
37+ ) ;
38+ }
39+ } ) ;
40+
41+ export function main ( ) {
42+ var count = 0 ;
43+ var maxDepth = getIntParameter ( 'depth' ) ;
44+
45+ bindAction ( '#destroyDom' , destroyDom ) ;
46+ bindAction ( '#createDom' , createDom ) ;
47+
48+ var empty = new TreeNode ( 0 , null , null ) ;
49+ var rootComponent = React . render (
50+ React . createElement ( TreeComponent , { treeNode : empty } , "" ) ,
51+ document . getElementById ( 'rootTree' )
52+ ) ;
53+
54+ function destroyDom ( ) {
55+ rootComponent . setProps ( { treeNode : empty } ) ;
56+ }
57+
58+ function createDom ( ) {
59+ var values = count ++ % 2 == 0 ?
60+ [ '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '*' ] :
61+ [ 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , '-' ] ;
62+ rootComponent . setProps ( { treeNode : buildTree ( maxDepth , values , 0 ) } ) ;
63+ }
64+ }
65+
66+ class TreeNode {
67+ value :string ;
68+ left :TreeNode ;
69+ right :TreeNode ;
70+
71+ constructor ( value , left , right ) {
72+ this . value = value ;
73+ this . left = left ;
74+ this . right = right ;
75+ }
76+ }
77+
78+ function buildTree ( maxDepth , values , curDepth ) {
79+ if ( maxDepth === curDepth ) return new TreeNode ( '' , null , null ) ;
80+ return new TreeNode (
81+ values [ curDepth ] ,
82+ buildTree ( maxDepth , values , curDepth + 1 ) ,
83+ buildTree ( maxDepth , values , curDepth + 1 ) ) ;
84+ }
0 commit comments