Home / File/ ProfilingCache.js — react Source File

ProfilingCache.js — react Source File

Architecture documentation for ProfilingCache.js, a javascript file in the react codebase. 6 imports, 1 dependents.

File javascript BabelCompiler 6 imports 1 dependents

Entity Profile

Dependency Diagram

graph LR
  af7aba1b_57c5_9030_4011_bcfaa9c37e21["ProfilingCache.js"]
  85373914_42ee_ed07_c5b1_5dac4e356a82["ProfilerStore.js"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> 85373914_42ee_ed07_c5b1_5dac4e356a82
  3fc29544_4278_4ce9_4b80_afb09671b539["ProfilerStore"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> 3fc29544_4278_4ce9_4b80_afb09671b539
  f45a3890_a0d5_bcec_f40c_e8f3d0753f19["CommitTreeBuilder"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> f45a3890_a0d5_bcec_f40c_e8f3d0753f19
  a2825344_2d74_8da6_d38e_93ccd4e19cf0["FlamegraphChartBuilder"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> a2825344_2d74_8da6_d38e_93ccd4e19cf0
  5bcc5fc3_75f8_537a_7461_c5ba736ba8bb["RankedChartBuilder"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> 5bcc5fc3_75f8_537a_7461_c5ba736ba8bb
  3b8e08d7_68a2_d5e4_cf40_47447be1f73a["types"]
  af7aba1b_57c5_9030_4011_bcfaa9c37e21 --> 3b8e08d7_68a2_d5e4_cf40_47447be1f73a
  85373914_42ee_ed07_c5b1_5dac4e356a82["ProfilerStore.js"]
  85373914_42ee_ed07_c5b1_5dac4e356a82 --> af7aba1b_57c5_9030_4011_bcfaa9c37e21
  style af7aba1b_57c5_9030_4011_bcfaa9c37e21 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

import ProfilerStore from './ProfilerStore';
import {
  getCommitTree,
  invalidateCommitTrees,
} from 'react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder';
import {
  getChartData as getFlamegraphChartData,
  invalidateChartData as invalidateFlamegraphChartData,
} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';
import {
  getChartData as getRankedChartData,
  invalidateChartData as invalidateRankedChartData,
} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';

import type {CommitTree} from 'react-devtools-shared/src/devtools/views/Profiler/types';
import type {ChartData as FlamegraphChartData} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';
import type {ChartData as RankedChartData} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';

export default class ProfilingCache {
  _fiberCommits: Map<number, Array<number>> = new Map();
  _profilerStore: ProfilerStore;

  constructor(profilerStore: ProfilerStore) {
    this._profilerStore = profilerStore;
  }

  getCommitTree: ({commitIndex: number, rootID: number}) => CommitTree = ({
    commitIndex,
    rootID,
  }) =>
    getCommitTree({
      commitIndex,
      profilerStore: this._profilerStore,
      rootID,
    });

  getFiberCommits: ({fiberID: number, rootID: number}) => Array<number> = ({
    fiberID,
    rootID,
  }) => {
    const cachedFiberCommits = this._fiberCommits.get(fiberID);
    if (cachedFiberCommits != null) {
      return cachedFiberCommits;
    }

    const fiberCommits = [];
    const dataForRoot = this._profilerStore.getDataForRoot(rootID);
    dataForRoot.commitData.forEach((commitDatum, commitIndex) => {
      if (commitDatum.fiberActualDurations.has(fiberID)) {
        fiberCommits.push(commitIndex);
      }
    });

    this._fiberCommits.set(fiberID, fiberCommits);

    return fiberCommits;
  };

  getFlamegraphChartData: ({
    commitIndex: number,
    commitTree: CommitTree,
    rootID: number,
  }) => FlamegraphChartData = ({commitIndex, commitTree, rootID}) =>
    getFlamegraphChartData({
      commitIndex,
      commitTree,
      profilerStore: this._profilerStore,
      rootID,
    });

  getRankedChartData: ({
    commitIndex: number,
    commitTree: CommitTree,
    rootID: number,
  }) => RankedChartData = ({commitIndex, commitTree, rootID}) =>
    getRankedChartData({
      commitIndex,
      commitTree,
      profilerStore: this._profilerStore,
      rootID,
    });

  invalidate() {
    this._fiberCommits.clear();

    invalidateCommitTrees();
    invalidateFlamegraphChartData();
    invalidateRankedChartData();
  }
}

Domain

Dependencies

Frequently Asked Questions

What does ProfilingCache.js do?
ProfilingCache.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain.
What does ProfilingCache.js depend on?
ProfilingCache.js imports 6 module(s): CommitTreeBuilder, FlamegraphChartBuilder, ProfilerStore, ProfilerStore.js, RankedChartBuilder, types.
What files import ProfilingCache.js?
ProfilingCache.js is imported by 1 file(s): ProfilerStore.js.
Where is ProfilingCache.js in the architecture?
ProfilingCache.js is located at packages/react-devtools-shared/src/devtools/ProfilingCache.js (domain: BabelCompiler, directory: packages/react-devtools-shared/src/devtools).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free