@@ -98,68 +98,62 @@ func logStats(b *testing.B, cnd bool, name string, cg *callgraph.Graph, main *ss
9898}
9999
100100func BenchmarkStatic (b * testing.B ) {
101- b . StopTimer ()
101+
102102 prog , main := example (b )
103- b .StartTimer ()
104103
105- for i := 0 ; i < b . N ; i ++ {
104+ for i := 0 ; b . Loop () ; i ++ {
106105 cg := static .CallGraph (prog )
107106 logStats (b , i == 0 , "static" , cg , main )
108107 }
109108}
110109
111110func BenchmarkCHA (b * testing.B ) {
112- b . StopTimer ()
111+
113112 prog , main := example (b )
114- b .StartTimer ()
115113
116- for i := 0 ; i < b . N ; i ++ {
114+ for i := 0 ; b . Loop () ; i ++ {
117115 cg := cha .CallGraph (prog )
118116 logStats (b , i == 0 , "cha" , cg , main )
119117 }
120118}
121119
122120func BenchmarkRTA (b * testing.B ) {
123- b . StopTimer ()
121+
124122 _ , main := example (b )
125- b .StartTimer ()
126123
127- for i := 0 ; i < b . N ; i ++ {
124+ for i := 0 ; b . Loop () ; i ++ {
128125 res := rta .Analyze ([]* ssa.Function {main }, true )
129126 cg := res .CallGraph
130127 logStats (b , i == 0 , "rta" , cg , main )
131128 }
132129}
133130
134131func BenchmarkVTA (b * testing.B ) {
135- b . StopTimer ()
132+
136133 prog , main := example (b )
137- b .StartTimer ()
138134
139- for i := 0 ; i < b . N ; i ++ {
135+ for i := 0 ; b . Loop () ; i ++ {
140136 cg := vta .CallGraph (ssautil .AllFunctions (prog ), cha .CallGraph (prog ))
141137 logStats (b , i == 0 , "vta" , cg , main )
142138 }
143139}
144140
145141func BenchmarkVTA2 (b * testing.B ) {
146- b . StopTimer ()
142+
147143 prog , main := example (b )
148- b .StartTimer ()
149144
150- for i := 0 ; i < b . N ; i ++ {
145+ for i := 0 ; b . Loop () ; i ++ {
151146 vta1 := vta .CallGraph (ssautil .AllFunctions (prog ), cha .CallGraph (prog ))
152147 cg := vta .CallGraph (reaches (main , vta1 , true ), vta1 )
153148 logStats (b , i == 0 , "vta2" , cg , main )
154149 }
155150}
156151
157152func BenchmarkVTA3 (b * testing.B ) {
158- b . StopTimer ()
153+
159154 prog , main := example (b )
160- b .StartTimer ()
161155
162- for i := 0 ; i < b . N ; i ++ {
156+ for i := 0 ; b . Loop () ; i ++ {
163157 vta1 := vta .CallGraph (ssautil .AllFunctions (prog ), cha .CallGraph (prog ))
164158 vta2 := vta .CallGraph (reaches (main , vta1 , true ), vta1 )
165159 cg := vta .CallGraph (reaches (main , vta2 , true ), vta2 )
@@ -168,23 +162,21 @@ func BenchmarkVTA3(b *testing.B) {
168162}
169163
170164func BenchmarkVTAAlt (b * testing.B ) {
171- b . StopTimer ()
165+
172166 prog , main := example (b )
173- b .StartTimer ()
174167
175- for i := 0 ; i < b . N ; i ++ {
168+ for i := 0 ; b . Loop () ; i ++ {
176169 cha := cha .CallGraph (prog )
177170 cg := vta .CallGraph (reaches (main , cha , true ), cha ) // start from only functions reachable by CHA.
178171 logStats (b , i == 0 , "vta-alt" , cg , main )
179172 }
180173}
181174
182175func BenchmarkVTAAlt2 (b * testing.B ) {
183- b . StopTimer ()
176+
184177 prog , main := example (b )
185- b .StartTimer ()
186178
187- for i := 0 ; i < b . N ; i ++ {
179+ for i := 0 ; b . Loop () ; i ++ {
188180 cha := cha .CallGraph (prog )
189181 vta1 := vta .CallGraph (reaches (main , cha , true ), cha )
190182 cg := vta .CallGraph (reaches (main , vta1 , true ), vta1 )
0 commit comments