Make ReactPerf measurements opaque
We intend to change the measurement format significantly in #6046. In order to introduce the new ReactPerf during 15.x release cycle, we are making the measurement structure opaque-ish in 15.0.
Dan Abramov committed
Mar 17, 2016 at 18:46 UTC
51d37c64c3736d9356469642e5480481128cf6c0
1 file changed
+17
-5
src/test/ReactDefaultPerf.js
+17
-5
@@ -51,6 +51,17 @@ function getID(inst) {
51
}
52
}
53
54
+// This implementation of ReactPerf is going away some time mid 15.x.
55
+// While we plan to keep most of the API, the actual format of measurements
56
+// will change dramatically. To signal this, we wrap them into an opaque-ish
57
+// object to discourage reaching into it until the API stabilizes.
58
+function wrapLegacyMeasurements(measurements) {
59
+ return { __unstable_this_format_will_change: measurements };
60
+}
61
+function unwrapLegacyMeasurements(measurements) {
62
+ return measurements && measurements.__unstable_this_format_will_change || measurements;
63
+}
64
+
65
var ReactDefaultPerf = {
66
_allMeasurements: [], // last item in the list is the current one
67
_mountStack: [0],
@@ -71,11 +82,11 @@ var ReactDefaultPerf = {
82
},
83
84
getLastMeasurements: function() {
74
- return ReactDefaultPerf._allMeasurements;
85
+ return wrapLegacyMeasurements(ReactDefaultPerf._allMeasurements);
86
},
87
88
printExclusive: function(measurements) {
78
- measurements = measurements || ReactDefaultPerf._allMeasurements;
89
+ measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
90
var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);
91
console.table(summary.map(function(item) {
92
return {
@@ -93,7 +104,7 @@ var ReactDefaultPerf = {
104
},
105
106
printInclusive: function(measurements) {
96
- measurements = measurements || ReactDefaultPerf._allMeasurements;
107
+ measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
108
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);
109
console.table(summary.map(function(item) {
110
return {
@@ -109,6 +120,7 @@ var ReactDefaultPerf = {
120
},
121
122
getMeasurementsSummaryMap: function(measurements) {
123
+ measurements = unwrapLegacyMeasurements(measurements);
124
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(
125
measurements,
126
true
@@ -123,7 +135,7 @@ var ReactDefaultPerf = {
135
},
136
137
printWasted: function(measurements) {
126
- measurements = measurements || ReactDefaultPerf._allMeasurements;
138
+ measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
139
console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));
140
console.log(
141
'Total time:',
@@ -132,7 +144,7 @@ var ReactDefaultPerf = {
144
},
145
146
printDOM: function(measurements) {
135
- measurements = measurements || ReactDefaultPerf._allMeasurements;
147
+ measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
148
var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
149
console.table(summary.map(function(item) {
150
var result = {};