(events, mainThread)
| 762 | * Matches DevTools decimal labels: kb = bytes/1000, Mb = bytes/1e6. |
| 763 | */ |
| 764 | export 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, |
no test coverage detected
searching dependent graphs…