MCPcopy Index your code
hub / github.com/handsontable/handsontable / computeUpdateCountersRanges

Function computeUpdateCountersRanges

performance-tests/trace-parser.mjs:764–824  ·  view source on GitHub ↗
(events, mainThread)

Source from the content-addressed store, hash-verified

762 * Matches DevTools decimal labels: kb = bytes/1000, Mb = bytes/1e6.
763 */
764export function computeUpdateCountersRanges(events, mainThread) {
765 const list = events.filter(
766 e =>
767 e.name === 'UpdateCounters' &&
768 e.ph === 'I' &&
769 e.args?.data &&
770 (!mainThread || (e.pid === mainThread.pid && e.tid === mainThread.tid)),
771 );
772
773 if (list.length === 0) {
774 return null;
775 }
776
777 let jsHeapMin = Infinity;
778 let jsHeapMax = -Infinity;
779 let documentsMin = Infinity;
780 let documentsMax = -Infinity;
781 let nodesMin = Infinity;
782 let nodesMax = -Infinity;
783 let listenersMin = Infinity;
784 let listenersMax = -Infinity;
785
786 for (const e of list) {
787 const d = e.args.data;
788
789 if (typeof d.jsHeapSizeUsed === 'number') {
790 jsHeapMin = Math.min(jsHeapMin, d.jsHeapSizeUsed);
791 jsHeapMax = Math.max(jsHeapMax, d.jsHeapSizeUsed);
792 }
793 if (typeof d.documents === 'number') {
794 documentsMin = Math.min(documentsMin, d.documents);
795 documentsMax = Math.max(documentsMax, d.documents);
796 }
797 if (typeof d.nodes === 'number') {
798 nodesMin = Math.min(nodesMin, d.nodes);
799 nodesMax = Math.max(nodesMax, d.nodes);
800 }
801 if (typeof d.jsEventListeners === 'number') {
802 listenersMin = Math.min(listenersMin, d.jsEventListeners);
803 listenersMax = Math.max(listenersMax, d.jsEventListeners);
804 }
805 }
806
807 if (!Number.isFinite(jsHeapMin)) {
808 return null;
809 }
810
811 return {
812 sampleCount: list.length,
813 jsHeapMinBytes: jsHeapMin,
814 jsHeapMaxBytes: jsHeapMax,
815 jsHeapMinLabel: formatHeapMinBytesLabel(jsHeapMin),
816 jsHeapMaxLabel: formatHeapMaxBytesLabel(jsHeapMax),
817 documentsMin: Number.isFinite(documentsMin) ? documentsMin : null,
818 documentsMax: Number.isFinite(documentsMax) ? documentsMax : null,
819 nodesMin: Number.isFinite(nodesMin) ? nodesMin : null,
820 nodesMax: Number.isFinite(nodesMax) ? nodesMax : null,
821 listenersMin: Number.isFinite(listenersMin) ? listenersMin : null,

Callers 1

parseTraceFunction · 0.85

Calls 3

formatHeapMinBytesLabelFunction · 0.85
formatHeapMaxBytesLabelFunction · 0.85
filterMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…