private createMaxHeapIndex()

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;
    }
  }