From 4d1c288c95846720bb17199846cfb8f19f9d528e Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 27 Mar 2019 12:10:19 -0700 Subject: [PATCH 1/2] core: truncate measure timings to hundredths --- lighthouse-core/runner.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lighthouse-core/runner.js b/lighthouse-core/runner.js index b021b81cb702..582df621bd3d 100644 --- a/lighthouse-core/runner.js +++ b/lighthouse-core/runner.js @@ -180,6 +180,12 @@ class Runner { // As entries can share a name, dedupe based on the startTime timestamp ].map(entry => /** @type {[number, PerformanceEntry]} */ ([entry.startTime, entry])); const timingEntries = Array.from(new Map(timingEntriesKeyValues).values()); + for (const timing of timingEntries) { + // @ts-ignore - ignore readonly + timing.startTime = parseFloat(timing.startTime.toFixed(2)); + // @ts-ignore - ignore readonly + timing.duration = parseFloat(timing.duration.toFixed(2)); + } const runnerEntry = timingEntries.find(e => e.name === 'lh:runner:run'); return {entries: timingEntries, total: runnerEntry && runnerEntry.duration || 0}; } From 10ba599ba1a151ad2cb40f6cb3df8651ded60606 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 28 Mar 2019 10:48:34 -0700 Subject: [PATCH 2/2] add comment, dont modify readonly obj --- lighthouse-core/runner.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lighthouse-core/runner.js b/lighthouse-core/runner.js index 582df621bd3d..4f0ea5985473 100644 --- a/lighthouse-core/runner.js +++ b/lighthouse-core/runner.js @@ -179,13 +179,16 @@ class Runner { ...timingEntriesFromRunner, // As entries can share a name, dedupe based on the startTime timestamp ].map(entry => /** @type {[number, PerformanceEntry]} */ ([entry.startTime, entry])); - const timingEntries = Array.from(new Map(timingEntriesKeyValues).values()); - for (const timing of timingEntries) { - // @ts-ignore - ignore readonly - timing.startTime = parseFloat(timing.startTime.toFixed(2)); - // @ts-ignore - ignore readonly - timing.duration = parseFloat(timing.duration.toFixed(2)); - } + const timingEntries = Array.from(new Map(timingEntriesKeyValues).values()) + // Truncate timestamps to hundredths of a millisecond saves ~4KB. No need for microsecond + // resolution. + .map(entry => { + return /** @type {PerformanceEntry} */ ({ + ...entry, + duration: parseFloat(entry.duration.toFixed(2)), + startTime: parseFloat(entry.startTime.toFixed(2)), + }); + }); const runnerEntry = timingEntries.find(e => e.name === 'lh:runner:run'); return {entries: timingEntries, total: runnerEntry && runnerEntry.duration || 0}; }