@samitouri / QOS-React / commits / 51d37c64c3

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