From c6aeb33855456e160474421d544c2477719184ae Mon Sep 17 00:00:00 2001 From: Brendan Kenny Date: Tue, 7 Feb 2017 18:07:50 -0800 Subject: [PATCH] perf: gather all event listeners in parallel (#1667) * issue devtools commands to get event listeners in parallel * disable websocket compression for cri --- lighthouse-core/gather/connections/cri.js | 4 +++- .../gatherers/dobetterweb/all-event-listeners.js | 11 ++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lighthouse-core/gather/connections/cri.js b/lighthouse-core/gather/connections/cri.js index 377e981d20b8..7eb32c35d778 100644 --- a/lighthouse-core/gather/connections/cri.js +++ b/lighthouse-core/gather/connections/cri.js @@ -46,7 +46,9 @@ class CriConnection extends Connection { this._pageId = response.id; return new Promise((resolve, reject) => { - const ws = new WebSocket(url); + const ws = new WebSocket(url, { + perMessageDeflate: false + }); ws.on('open', () => { this._ws = ws; resolve(); diff --git a/lighthouse-core/gather/gatherers/dobetterweb/all-event-listeners.js b/lighthouse-core/gather/gatherers/dobetterweb/all-event-listeners.js index 94b6a024f7d2..97c4cb99d01d 100644 --- a/lighthouse-core/gather/gatherers/dobetterweb/all-event-listeners.js +++ b/lighthouse-core/gather/gatherers/dobetterweb/all-event-listeners.js @@ -112,13 +112,10 @@ class EventListeners extends Gatherer { * listeners found across the elements. */ collectListeners(nodes) { - return nodes.reduce((chain, node) => { - return chain.then(prevArr => { - // Call getEventListeners once for each node in the list. - return this.getEventListeners(node.element ? node.element.nodeId : node) - .then(result => prevArr.concat(result)); - }); - }, Promise.resolve([])); + // Gather event listeners from each node in parallel. + return Promise.all(nodes.map(node => { + return this.getEventListeners(node.element ? node.element.nodeId : node); + })).then(nestedListeners => [].concat(...nestedListeners)); } beforePass(options) {