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