aboutsummaryrefslogtreecommitdiff
path: root/node_modules/react-dom/lib/ReactPerf.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/react-dom/lib/ReactPerf.js')
-rw-r--r--node_modules/react-dom/lib/ReactPerf.js500
1 files changed, 0 insertions, 500 deletions
diff --git a/node_modules/react-dom/lib/ReactPerf.js b/node_modules/react-dom/lib/ReactPerf.js
deleted file mode 100644
index 891b9dc81..000000000
--- a/node_modules/react-dom/lib/ReactPerf.js
+++ /dev/null
@@ -1,500 +0,0 @@
-/**
- * Copyright 2016-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- *
- */
-
-'use strict';
-
-var _assign = require('object-assign');
-
-var _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var ReactDebugTool = require('./ReactDebugTool');
-var lowPriorityWarning = require('./lowPriorityWarning');
-var alreadyWarned = false;
-
-function roundFloat(val) {
- var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
-
- var n = Math.pow(10, base);
- return Math.floor(val * n) / n;
-}
-
-// Flow type definition of console.table is too strict right now, see
-// https://github.com/facebook/flow/pull/2353 for updates
-function consoleTable(table) {
- console.table(table);
-}
-
-function warnInProduction() {
- if (alreadyWarned) {
- return;
- }
- alreadyWarned = true;
- if (typeof console !== 'undefined') {
- console.error('ReactPerf is not supported in the production builds of React. ' + 'To collect measurements, please use the development build of React instead.');
- }
-}
-
-function getLastMeasurements() {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return [];
- }
-
- return ReactDebugTool.getFlushHistory();
-}
-
-function getExclusive() {
- var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements();
-
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return [];
- }
-
- var aggregatedStats = {};
- var affectedIDs = {};
-
- function updateAggregatedStats(treeSnapshot, instanceID, timerType, applyUpdate) {
- var displayName = treeSnapshot[instanceID].displayName;
-
- var key = displayName;
- var stats = aggregatedStats[key];
- if (!stats) {
- affectedIDs[key] = {};
- stats = aggregatedStats[key] = {
- key: key,
- instanceCount: 0,
- counts: {},
- durations: {},
- totalDuration: 0
- };
- }
- if (!stats.durations[timerType]) {
- stats.durations[timerType] = 0;
- }
- if (!stats.counts[timerType]) {
- stats.counts[timerType] = 0;
- }
- affectedIDs[key][instanceID] = true;
- applyUpdate(stats);
- }
-
- flushHistory.forEach(function (flush) {
- var measurements = flush.measurements,
- treeSnapshot = flush.treeSnapshot;
-
- measurements.forEach(function (measurement) {
- var duration = measurement.duration,
- instanceID = measurement.instanceID,
- timerType = measurement.timerType;
-
- updateAggregatedStats(treeSnapshot, instanceID, timerType, function (stats) {
- stats.totalDuration += duration;
- stats.durations[timerType] += duration;
- stats.counts[timerType]++;
- });
- });
- });
-
- return Object.keys(aggregatedStats).map(function (key) {
- return _extends({}, aggregatedStats[key], {
- instanceCount: Object.keys(affectedIDs[key]).length
- });
- }).sort(function (a, b) {
- return b.totalDuration - a.totalDuration;
- });
-}
-
-function getInclusive() {
- var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements();
-
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return [];
- }
-
- var aggregatedStats = {};
- var affectedIDs = {};
-
- function updateAggregatedStats(treeSnapshot, instanceID, applyUpdate) {
- var _treeSnapshot$instanc = treeSnapshot[instanceID],
- displayName = _treeSnapshot$instanc.displayName,
- ownerID = _treeSnapshot$instanc.ownerID;
-
- var owner = treeSnapshot[ownerID];
- var key = (owner ? owner.displayName + ' > ' : '') + displayName;
- var stats = aggregatedStats[key];
- if (!stats) {
- affectedIDs[key] = {};
- stats = aggregatedStats[key] = {
- key: key,
- instanceCount: 0,
- inclusiveRenderDuration: 0,
- renderCount: 0
- };
- }
- affectedIDs[key][instanceID] = true;
- applyUpdate(stats);
- }
-
- var isCompositeByID = {};
- flushHistory.forEach(function (flush) {
- var measurements = flush.measurements;
-
- measurements.forEach(function (measurement) {
- var instanceID = measurement.instanceID,
- timerType = measurement.timerType;
-
- if (timerType !== 'render') {
- return;
- }
- isCompositeByID[instanceID] = true;
- });
- });
-
- flushHistory.forEach(function (flush) {
- var measurements = flush.measurements,
- treeSnapshot = flush.treeSnapshot;
-
- measurements.forEach(function (measurement) {
- var duration = measurement.duration,
- instanceID = measurement.instanceID,
- timerType = measurement.timerType;
-
- if (timerType !== 'render') {
- return;
- }
- updateAggregatedStats(treeSnapshot, instanceID, function (stats) {
- stats.renderCount++;
- });
- var nextParentID = instanceID;
- while (nextParentID) {
- // As we traverse parents, only count inclusive time towards composites.
- // We know something is a composite if its render() was called.
- if (isCompositeByID[nextParentID]) {
- updateAggregatedStats(treeSnapshot, nextParentID, function (stats) {
- stats.inclusiveRenderDuration += duration;
- });
- }
- nextParentID = treeSnapshot[nextParentID].parentID;
- }
- });
- });
-
- return Object.keys(aggregatedStats).map(function (key) {
- return _extends({}, aggregatedStats[key], {
- instanceCount: Object.keys(affectedIDs[key]).length
- });
- }).sort(function (a, b) {
- return b.inclusiveRenderDuration - a.inclusiveRenderDuration;
- });
-}
-
-function getWasted() {
- var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements();
-
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return [];
- }
-
- var aggregatedStats = {};
- var affectedIDs = {};
-
- function updateAggregatedStats(treeSnapshot, instanceID, applyUpdate) {
- var _treeSnapshot$instanc2 = treeSnapshot[instanceID],
- displayName = _treeSnapshot$instanc2.displayName,
- ownerID = _treeSnapshot$instanc2.ownerID;
-
- var owner = treeSnapshot[ownerID];
- var key = (owner ? owner.displayName + ' > ' : '') + displayName;
- var stats = aggregatedStats[key];
- if (!stats) {
- affectedIDs[key] = {};
- stats = aggregatedStats[key] = {
- key: key,
- instanceCount: 0,
- inclusiveRenderDuration: 0,
- renderCount: 0
- };
- }
- affectedIDs[key][instanceID] = true;
- applyUpdate(stats);
- }
-
- flushHistory.forEach(function (flush) {
- var measurements = flush.measurements,
- treeSnapshot = flush.treeSnapshot,
- operations = flush.operations;
-
- var isDefinitelyNotWastedByID = {};
-
- // Find host components associated with an operation in this batch.
- // Mark all components in their parent tree as definitely not wasted.
- operations.forEach(function (operation) {
- var instanceID = operation.instanceID;
-
- var nextParentID = instanceID;
- while (nextParentID) {
- isDefinitelyNotWastedByID[nextParentID] = true;
- nextParentID = treeSnapshot[nextParentID].parentID;
- }
- });
-
- // Find composite components that rendered in this batch.
- // These are potential candidates for being wasted renders.
- var renderedCompositeIDs = {};
- measurements.forEach(function (measurement) {
- var instanceID = measurement.instanceID,
- timerType = measurement.timerType;
-
- if (timerType !== 'render') {
- return;
- }
- renderedCompositeIDs[instanceID] = true;
- });
-
- measurements.forEach(function (measurement) {
- var duration = measurement.duration,
- instanceID = measurement.instanceID,
- timerType = measurement.timerType;
-
- if (timerType !== 'render') {
- return;
- }
-
- // If there was a DOM update below this component, or it has just been
- // mounted, its render() is not considered wasted.
- var updateCount = treeSnapshot[instanceID].updateCount;
-
- if (isDefinitelyNotWastedByID[instanceID] || updateCount === 0) {
- return;
- }
-
- // We consider this render() wasted.
- updateAggregatedStats(treeSnapshot, instanceID, function (stats) {
- stats.renderCount++;
- });
-
- var nextParentID = instanceID;
- while (nextParentID) {
- // Any parents rendered during this batch are considered wasted
- // unless we previously marked them as dirty.
- var isWasted = renderedCompositeIDs[nextParentID] && !isDefinitelyNotWastedByID[nextParentID];
- if (isWasted) {
- updateAggregatedStats(treeSnapshot, nextParentID, function (stats) {
- stats.inclusiveRenderDuration += duration;
- });
- }
- nextParentID = treeSnapshot[nextParentID].parentID;
- }
- });
- });
-
- return Object.keys(aggregatedStats).map(function (key) {
- return _extends({}, aggregatedStats[key], {
- instanceCount: Object.keys(affectedIDs[key]).length
- });
- }).sort(function (a, b) {
- return b.inclusiveRenderDuration - a.inclusiveRenderDuration;
- });
-}
-
-function getOperations() {
- var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements();
-
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return [];
- }
-
- var stats = [];
- flushHistory.forEach(function (flush, flushIndex) {
- var operations = flush.operations,
- treeSnapshot = flush.treeSnapshot;
-
- operations.forEach(function (operation) {
- var instanceID = operation.instanceID,
- type = operation.type,
- payload = operation.payload;
- var _treeSnapshot$instanc3 = treeSnapshot[instanceID],
- displayName = _treeSnapshot$instanc3.displayName,
- ownerID = _treeSnapshot$instanc3.ownerID;
-
- var owner = treeSnapshot[ownerID];
- var key = (owner ? owner.displayName + ' > ' : '') + displayName;
-
- stats.push({
- flushIndex: flushIndex,
- instanceID: instanceID,
- key: key,
- type: type,
- ownerID: ownerID,
- payload: payload
- });
- });
- });
- return stats;
-}
-
-function printExclusive(flushHistory) {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- var stats = getExclusive(flushHistory);
- var table = stats.map(function (item) {
- var key = item.key,
- instanceCount = item.instanceCount,
- totalDuration = item.totalDuration;
-
- var renderCount = item.counts.render || 0;
- var renderDuration = item.durations.render || 0;
- return {
- Component: key,
- 'Total time (ms)': roundFloat(totalDuration),
- 'Instance count': instanceCount,
- 'Total render time (ms)': roundFloat(renderDuration),
- 'Average render time (ms)': renderCount ? roundFloat(renderDuration / renderCount) : undefined,
- 'Render count': renderCount,
- 'Total lifecycle time (ms)': roundFloat(totalDuration - renderDuration)
- };
- });
- consoleTable(table);
-}
-
-function printInclusive(flushHistory) {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- var stats = getInclusive(flushHistory);
- var table = stats.map(function (item) {
- var key = item.key,
- instanceCount = item.instanceCount,
- inclusiveRenderDuration = item.inclusiveRenderDuration,
- renderCount = item.renderCount;
-
- return {
- 'Owner > Component': key,
- 'Inclusive render time (ms)': roundFloat(inclusiveRenderDuration),
- 'Instance count': instanceCount,
- 'Render count': renderCount
- };
- });
- consoleTable(table);
-}
-
-function printWasted(flushHistory) {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- var stats = getWasted(flushHistory);
- var table = stats.map(function (item) {
- var key = item.key,
- instanceCount = item.instanceCount,
- inclusiveRenderDuration = item.inclusiveRenderDuration,
- renderCount = item.renderCount;
-
- return {
- 'Owner > Component': key,
- 'Inclusive wasted time (ms)': roundFloat(inclusiveRenderDuration),
- 'Instance count': instanceCount,
- 'Render count': renderCount
- };
- });
- consoleTable(table);
-}
-
-function printOperations(flushHistory) {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- var stats = getOperations(flushHistory);
- var table = stats.map(function (stat) {
- return {
- 'Owner > Node': stat.key,
- Operation: stat.type,
- Payload: typeof stat.payload === 'object' ? JSON.stringify(stat.payload) : stat.payload,
- 'Flush index': stat.flushIndex,
- 'Owner Component ID': stat.ownerID,
- 'DOM Component ID': stat.instanceID
- };
- });
- consoleTable(table);
-}
-
-var warnedAboutPrintDOM = false;
-function printDOM(measurements) {
- lowPriorityWarning(warnedAboutPrintDOM, '`ReactPerf.printDOM(...)` is deprecated. Use ' + '`ReactPerf.printOperations(...)` instead.');
- warnedAboutPrintDOM = true;
- return printOperations(measurements);
-}
-
-var warnedAboutGetMeasurementsSummaryMap = false;
-function getMeasurementsSummaryMap(measurements) {
- lowPriorityWarning(warnedAboutGetMeasurementsSummaryMap, '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' + '`ReactPerf.getWasted(...)` instead.');
- warnedAboutGetMeasurementsSummaryMap = true;
- return getWasted(measurements);
-}
-
-function start() {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- ReactDebugTool.beginProfiling();
-}
-
-function stop() {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return;
- }
-
- ReactDebugTool.endProfiling();
-}
-
-function isRunning() {
- if (!(process.env.NODE_ENV !== 'production')) {
- warnInProduction();
- return false;
- }
-
- return ReactDebugTool.isProfiling();
-}
-
-var ReactPerfAnalysis = {
- getLastMeasurements: getLastMeasurements,
- getExclusive: getExclusive,
- getInclusive: getInclusive,
- getWasted: getWasted,
- getOperations: getOperations,
- printExclusive: printExclusive,
- printInclusive: printInclusive,
- printWasted: printWasted,
- printOperations: printOperations,
- start: start,
- stop: stop,
- isRunning: isRunning,
- // Deprecated:
- printDOM: printDOM,
- getMeasurementsSummaryMap: getMeasurementsSummaryMap
-};
-
-module.exports = ReactPerfAnalysis; \ No newline at end of file