@@ -14,8 +14,7 @@ async function runBenchmark(page: Page, benchmark: BenchmarkPuppeteer, framework
14
14
15
15
async function initBenchmark ( page : Page , benchmark : BenchmarkPuppeteer , framework : FrameworkData ) : Promise < any > {
16
16
await benchmark . init ( page , framework ) ;
17
- if ( config . LOG_PROGRESS )
18
- console . log ( "after initialized" , benchmark . benchmarkInfo . id , benchmark . type , framework . name ) ;
17
+ if ( config . LOG_PROGRESS ) console . log ( "after initialized" , benchmark . benchmarkInfo . id , benchmark . type , framework . name ) ;
19
18
}
20
19
21
20
const wait = ( delay = 1000 ) => new Promise ( ( res ) => setTimeout ( res , delay ) ) ;
@@ -46,8 +45,8 @@ function convertError(error: any): string {
46
45
// eslint-disable-next-line @typescript-eslint/no-unused-vars
47
46
async function forceGC ( page : Page , client : CDPSession ) {
48
47
for ( let i = 0 ; i < 7 ; i ++ ) {
49
- // await client.send('HeapProfiler.collectGarbage');
50
- await page . evaluate ( "window.gc()" ) ;
48
+ // await client.send('HeapProfiler.collectGarbage');
49
+ await page . evaluate ( "window.gc()" ) ;
51
50
}
52
51
}
53
52
@@ -56,119 +55,113 @@ async function runCPUBenchmark(
56
55
benchmark : CPUBenchmarkPuppeteer ,
57
56
benchmarkOptions : BenchmarkOptions
58
57
) : Promise < ErrorAndWarning < CPUBenchmarkResult > > {
59
- let error : string = undefined ;
60
- let warnings : string [ ] = [ ] ;
61
- let results : CPUBenchmarkResult [ ] = [ ] ;
58
+ let warnings : string [ ] = [ ] ;
59
+ let results : CPUBenchmarkResult [ ] = [ ] ;
62
60
63
- console . log ( "benchmarking" , framework , benchmark . benchmarkInfo . id ) ;
61
+ console . log ( "benchmarking" , framework , benchmark . benchmarkInfo . id ) ;
64
62
let browser : Browser = null ;
65
63
let page : Page = null ;
66
- try {
67
- browser = await startBrowser ( benchmarkOptions ) ;
68
- page = await browser . newPage ( ) ;
69
- // if (config.LOG_DETAILS) {
64
+ try {
65
+ browser = await startBrowser ( benchmarkOptions ) ;
66
+ page = await browser . newPage ( ) ;
67
+ // if (config.LOG_DETAILS) {
70
68
page . on ( "console" , ( msg ) => {
71
69
for ( let i = 0 ; i < msg . args ( ) . length ; ++ i ) console . log ( `BROWSER: ${ msg . args ( ) [ i ] } ` ) ;
72
- } ) ;
73
- // }
70
+ } ) ;
71
+ // }
74
72
for ( let i = 0 ; i < benchmarkOptions . batchSize ; i ++ ) {
75
- try {
73
+ try {
76
74
await page . goto ( `http://${ benchmarkOptions . host } :${ benchmarkOptions . port } /${ framework . uri } /index.html` , {
77
- waitUntil : "networkidle0" ,
75
+ waitUntil : "networkidle0" ,
78
76
} ) ;
79
- } catch ( ex ) {
80
- console . log ( "**** loading benchmark failed, retrying" ) ;
77
+ } catch ( error ) {
78
+ console . log ( "**** loading benchmark failed, retrying" ) ;
81
79
await page . goto ( `http://${ benchmarkOptions . host } :${ benchmarkOptions . port } /${ framework . uri } /index.html` , {
82
- waitUntil : "networkidle0" ,
80
+ waitUntil : "networkidle0" ,
83
81
} ) ;
84
- }
82
+ }
85
83
86
- // await (driver as any).sendDevToolsCommand('Network.enable');
87
- // await (driver as any).sendDevToolsCommand('Network.emulateNetworkConditions', {
88
- // offline: false,
89
- // latency: 200, // ms
90
- // downloadThroughput: 780 * 1024 / 8, // 780 kb/s
91
- // uploadThroughput: 330 * 1024 / 8, // 330 kb/s
92
- // });
93
- console . log ( "initBenchmark" ) ;
94
- await initBenchmark ( page , benchmark , framework ) ;
84
+ // await (driver as any).sendDevToolsCommand('Network.enable');
85
+ // await (driver as any).sendDevToolsCommand('Network.emulateNetworkConditions', {
86
+ // offline: false,
87
+ // latency: 200, // ms
88
+ // downloadThroughput: 780 * 1024 / 8, // 780 kb/s
89
+ // uploadThroughput: 330 * 1024 / 8, // 330 kb/s
90
+ // });
91
+ console . log ( "initBenchmark" ) ;
92
+ await initBenchmark ( page , benchmark , framework ) ;
95
93
96
- let categories = [
97
- "blink.user_timing" ,
98
- "devtools.timeline" ,
99
- "disabled-by-default-devtools.timeline" ,
100
- ] ;
101
- // let categories = [
102
- // "loading",
103
- // 'devtools.timeline',
104
- // 'disabled-by-default-devtools.timeline',
105
- // '-*',
106
- // 'v8.execute',
107
- // 'disabled-by-default-devtools.timeline.frame',
108
- // 'toplevel',
109
- // 'blink.console',
110
- // 'blink.user_timing',
111
- // 'latencyInfo',
112
- // 'disabled-by-default-v8.cpu_profiler',
113
- // 'disabled-by-default-devtools.timeline.stack',
114
- // ];
94
+ let categories = [ "blink.user_timing" , "devtools.timeline" , "disabled-by-default-devtools.timeline" ] ;
95
+ // let categories = [
96
+ // "loading",
97
+ // 'devtools.timeline',
98
+ // 'disabled-by-default-devtools.timeline',
99
+ // '-*',
100
+ // 'v8.execute',
101
+ // 'disabled-by-default-devtools.timeline.frame',
102
+ // 'toplevel',
103
+ // 'blink.console',
104
+ // 'blink.user_timing',
105
+ // 'latencyInfo',
106
+ // 'disabled-by-default-v8.cpu_profiler',
107
+ // 'disabled-by-default-devtools.timeline.stack',
108
+ // ];
115
109
116
- const client = await page . target ( ) . createCDPSession ( ) ;
110
+ const client = await page . target ( ) . createCDPSession ( ) ;
117
111
118
112
let throttleCPU = slowDownFactor ( benchmark . benchmarkInfo . id , benchmarkOptions . allowThrottling ) ;
119
- if ( throttleCPU ) {
120
- console . log ( "CPU slowdown" , throttleCPU ) ;
121
- await page . emulateCPUThrottling ( throttleCPU ) ;
122
- }
123
-
113
+ if ( throttleCPU ) {
114
+ console . log ( "CPU slowdown" , throttleCPU ) ;
115
+ await page . emulateCPUThrottling ( throttleCPU ) ;
116
+ }
117
+
124
118
await page . tracing . start ( {
125
119
path : fileNameTrace ( framework , benchmark . benchmarkInfo , i , benchmarkOptions ) ,
126
- screenshots : false ,
120
+ screenshots : false ,
127
121
categories : categories ,
128
- } ) ;
129
- await forceGC ( page , client ) ;
130
- console . log ( "runBenchmark" ) ;
131
- let m1 = await page . metrics ( ) ;
132
- await runBenchmark ( page , benchmark , framework ) ;
122
+ } ) ;
123
+ await forceGC ( page , client ) ;
124
+ console . log ( "runBenchmark" ) ;
125
+ let m1 = await page . metrics ( ) ;
126
+ await runBenchmark ( page , benchmark , framework ) ;
127
+
128
+ await wait ( 40 ) ;
129
+ await page . tracing . stop ( ) ;
130
+ let m2 = await page . metrics ( ) ;
131
+ if ( throttleCPU ) {
132
+ await page . emulateCPUThrottling ( 1 ) ;
133
+ }
133
134
134
- await wait ( 40 ) ;
135
- await page . tracing . stop ( ) ;
136
- let m2 = await page . metrics ( ) ;
137
- if ( throttleCPU ) {
138
- await page . emulateCPUThrottling ( 1 ) ;
139
- }
140
-
141
- // console.log("afterBenchmark", m1, m2);
142
- // let result = (m2.TaskDuration - m1.TaskDuration)*1000.0; //await computeResultsCPU(fileNameTrace(framework, benchmark, i), benchmarkOptions, framework, benchmark, warnings, benchmarkOptions.batchSize);
135
+ // console.log("afterBenchmark", m1, m2);
136
+ // let result = (m2.TaskDuration - m1.TaskDuration)*1000.0; //await computeResultsCPU(fileNameTrace(framework, benchmark, i), benchmarkOptions, framework, benchmark, warnings, benchmarkOptions.batchSize);
143
137
let result = await computeResultsCPU ( fileNameTrace ( framework , benchmark . benchmarkInfo , i , benchmarkOptions ) ) ;
144
138
let resultScript = await computeResultsJS (
145
139
result ,
146
140
config ,
147
141
fileNameTrace ( framework , benchmark . benchmarkInfo , i , benchmarkOptions )
148
142
) ;
149
- console . log ( "**** resultScript =" , resultScript ) ;
150
- if ( m2 . Timestamp == m1 . Timestamp ) throw new Error ( "Page metrics timestamp didn't change" ) ;
143
+ console . log ( "**** resultScript =" , resultScript ) ;
144
+ if ( m2 . Timestamp == m1 . Timestamp ) throw new Error ( "Page metrics timestamp didn't change" ) ;
151
145
results . push ( { total : result . duration , script : resultScript } ) ;
152
146
console . log ( `duration for ${ framework . name } and ${ benchmark . benchmarkInfo . id } : ${ JSON . stringify ( result ) } ` ) ;
153
147
if ( result . duration < 0 ) throw new Error ( `duration ${ result } < 0` ) ;
154
- }
155
- return { error, warnings, result : results } ;
156
- } catch ( e ) {
157
- console . log ( "ERROR" , e ) ;
158
- error = convertError ( e ) ;
159
- return { error, warnings } ;
160
- } finally {
161
- try {
162
- if ( browser ) {
148
+ }
149
+ return { error : undefined , warnings, result : results } ;
150
+ } catch ( error ) {
151
+ console . log ( "ERROR" , error ) ;
152
+ return { error : convertError ( error ) , warnings } ;
153
+ } finally {
154
+ try {
155
+ if ( browser ) {
163
156
console . log ( "*** browser close" ) ;
164
- await browser . close ( ) ;
157
+ await browser . close ( ) ;
165
158
console . log ( "*** browser closed" ) ;
166
- }
167
- } catch ( err ) {
168
- console . log ( "ERROR cleaning up driver" , err ) ;
169
- }
170
- console . log ( "*** browser has been shutting down" ) ;
159
+ }
160
+ } catch ( error ) {
161
+ console . log ( "ERROR cleaning up driver" , error ) ;
171
162
}
163
+ console . log ( "*** browser has been shutting down" ) ;
164
+ }
172
165
}
173
166
174
167
async function runMemBenchmark (
@@ -191,9 +184,9 @@ async function runMemBenchmark(
191
184
for ( let i = 0 ; i < msg . args ( ) . length ; ++ i ) console . log ( `BROWSER: ${ msg . args ( ) [ i ] } ` ) ;
192
185
} ) ;
193
186
}
194
-
187
+
195
188
await page . goto ( `http://${ benchmarkOptions . host } :${ benchmarkOptions . port } /${ framework . uri } /index.html` , {
196
- waitUntil : "networkidle0" ,
189
+ waitUntil : "networkidle0" ,
197
190
} ) ;
198
191
199
192
// await (driver as any).sendDevToolsCommand('Network.enable');
@@ -229,17 +222,16 @@ async function runMemBenchmark(
229
222
await page . close ( ) ;
230
223
await browser . close ( ) ;
231
224
return { error, warnings, result : results } ;
232
- } catch ( e ) {
233
- console . log ( "ERROR" , e ) ;
234
- error = convertError ( e ) ;
225
+ } catch ( error ) {
226
+ console . log ( "ERROR" , error ) ;
235
227
try {
236
228
if ( browser ) {
237
229
await browser . close ( ) ;
238
230
}
239
- } catch ( err ) {
240
- console . log ( "ERROR cleaning up driver" , err ) ;
231
+ } catch ( error ) {
232
+ console . log ( "ERROR cleaning up driver" , error ) ;
241
233
}
242
- return { error, warnings } ;
234
+ return { error : convertError ( error ) , warnings } ;
243
235
}
244
236
}
245
237
@@ -285,9 +277,9 @@ process.on("message", (msg: any) => {
285
277
process . send ( result ) ;
286
278
process . exit ( 0 ) ;
287
279
} )
288
- . catch ( ( err ) => {
280
+ . catch ( ( error ) => {
289
281
console . log ( "CATCH: Error in forkedBenchmarkRunner" ) ;
290
- process . send ( { failure : convertError ( err ) } ) ;
282
+ process . send ( { failure : convertError ( error ) } ) ;
291
283
process . exit ( 0 ) ;
292
284
} ) ;
293
285
} ) ;
0 commit comments