in frontend/app/components/memory_viewer/memory_usage/memory_usage.ts [463:495]
private createMaxHeapIndex() {
const indexedMaxHeap = this.maxHeap.map((e, i) => {
return {ind: i, val: e};
});
// Sort max heap objects by size and create index.
indexedMaxHeap.sort((a, b) => {
const sizeA = a && a.val && a.val.sizeMiB ? a.val.sizeMiB : 0;
const sizeB = b && b.val && b.val.sizeMiB ? b.val.sizeMiB : 0;
return sizeB - sizeA;
});
this.maxHeapBySize = indexedMaxHeap.map(e => e.val);
this.bySizeToMaxHeap = indexedMaxHeap.map(e => e.ind);
this.maxHeapToBySize.length = this.maxHeap.length;
for (let i = 0; i < this.bySizeToMaxHeap.length; i++) {
this.maxHeapToBySize[this.bySizeToMaxHeap[i]] = i;
}
// Sort max heap objects by padding size and create index.
indexedMaxHeap.sort((a, b) => {
const paddingA = a && a.val && a.val.sizeMiB && a.val.unpaddedSizeMiB ?
a.val.sizeMiB - a.val.unpaddedSizeMiB :
0;
const paddingB = b && b.val && b.val.sizeMiB && b.val.unpaddedSizeMiB ?
b.val.sizeMiB - b.val.unpaddedSizeMiB :
0;
return paddingB - paddingA;
});
this.maxHeapByPaddingSize = indexedMaxHeap.map(e => e.val);
this.byPaddingSizeToMaxHeap = indexedMaxHeap.map(e => e.ind);
this.maxHeapToByPaddingSize.length = this.maxHeap.length;
for (let i = 0; i < this.byPaddingSizeToMaxHeap.length; i++) {
this.maxHeapToByPaddingSize[this.byPaddingSizeToMaxHeap[i]] = i;
}
}