Rename ReactPerf methods to match the upcoming ReactPerf revamp
Dan Abramov committed
Mar 17, 2016 at 20:03 UTC
ea55d667602d083cacef77074228c9150deac0fa
3 files changed
+72
-5
docs/docs/10.9-perf.md
+5
-1
@@ -41,11 +41,15 @@ Prints the overall time taken. If no argument's passed, defaults to all the meas
41
42

43
44
-### `Perf.printDOM(measurements)`
44
+### `Perf.printOperations(measurements)`
45
Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
46
47

48
49
+### `Perf.printDOM(measurements)`
50
+
51
+This method has been renamed to `printOperations()` which is described in the previous paragraph. Currently `printDOM()` still exists as an alias but it prints a deprecation warning and will eventually be removed.
52
+
53
## Advanced API
54
55
The above print methods use `Perf.getLastMeasurements()` to pretty-print the result.
src/test/ReactDefaultPerf.js
+25
-1
@@ -18,6 +18,7 @@ var ReactMount = require('ReactMount');
18
var ReactPerf = require('ReactPerf');
19
20
var performanceNow = require('performanceNow');
21
+var warning = require('warning');
22
23
function roundFloat(val) {
24
return Math.floor(val * 100) / 100;
@@ -62,6 +63,9 @@ function unwrapLegacyMeasurements(measurements) {
63
return measurements && measurements.__unstable_this_format_will_change || measurements;
64
}
65
66
+var warnedAboutPrintDOM = false;
67
+var warnedAboutGetMeasurementsSummaryMap = false;
68
+
69
var ReactDefaultPerf = {
70
_allMeasurements: [], // last item in the list is the current one
71
_mountStack: [0],
@@ -120,6 +124,16 @@ var ReactDefaultPerf = {
124
},
125
126
getMeasurementsSummaryMap: function(measurements) {
127
+ warning(
128
+ warnedAboutGetMeasurementsSummaryMap,
129
+ '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' +
130
+ '`ReactPerf.getWasted(...)` instead.'
131
+ );
132
+ warnedAboutGetMeasurementsSummaryMap = true;
133
+ return ReactDefaultPerf.getWasted(measurements);
134
+ },
135
+
136
+ getWasted: function(measurements) {
137
measurements = unwrapLegacyMeasurements(measurements);
138
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(
139
measurements,
@@ -136,7 +150,7 @@ var ReactDefaultPerf = {
150
151
printWasted: function(measurements) {
152
measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
139
- console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));
153
+ console.table(ReactDefaultPerf.getWasted(measurements));
154
console.log(
155
'Total time:',
156
ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'
@@ -144,6 +158,16 @@ var ReactDefaultPerf = {
158
},
159
160
printDOM: function(measurements) {
161
+ warning(
162
+ warnedAboutPrintDOM,
163
+ '`ReactPerf.printDOM(...)` is deprecated. Use ' +
164
+ '`ReactPerf.printOperations(...)` instead.'
165
+ );
166
+ warnedAboutPrintDOM = true;
167
+ return ReactDefaultPerf.printOperations(measurements);
168
+ },
169
+
170
+ printOperations: function(measurements) {
171
measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
172
var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
173
console.table(summary.map(function(item) {
src/test/__tests__/ReactDefaultPerf-test.js
+42
-3
@@ -28,6 +28,11 @@ describe('ReactDefaultPerf', function() {
28
return now++;
29
});
30
31
+ if (typeof console.table !== 'function') {
32
+ console.table = () => {};
33
+ console.table.isFake = true;
34
+ }
35
+
36
React = require('React');
37
ReactDOM = require('ReactDOM');
38
ReactDefaultPerf = require('ReactDefaultPerf');
@@ -54,6 +59,12 @@ describe('ReactDefaultPerf', function() {
59
});
60
});
61
62
+ afterEach(function() {
63
+ if (console.table.isFake) {
64
+ delete console.table;
65
+ }
66
+ });
67
+
68
function measure(fn) {
69
ReactDefaultPerf.start();
70
fn();
@@ -68,7 +79,7 @@ describe('ReactDefaultPerf', function() {
79
ReactDOM.render(<App />, container);
80
});
81
71
- var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
82
+ var summary = ReactDefaultPerf.getWasted(measurements);
83
expect(summary.length).toBe(2);
84
85
/*eslint-disable dot-notation */
@@ -94,7 +105,7 @@ describe('ReactDefaultPerf', function() {
105
ReactDOM.render(<App flipSecond={true} />, container);
106
});
107
97
- var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
108
+ var summary = ReactDefaultPerf.getWasted(measurements);
109
expect(summary.length).toBe(1);
110
111
/*eslint-disable dot-notation */
@@ -108,7 +119,7 @@ describe('ReactDefaultPerf', function() {
119
120
function expectNoWaste(fn) {
121
var measurements = measure(fn);
111
- var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
122
+ var summary = ReactDefaultPerf.getWasted(measurements);
123
expect(summary).toEqual([]);
124
}
125
@@ -226,4 +237,32 @@ describe('ReactDefaultPerf', function() {
237
expect(summary).toEqual([]);
238
});
239
240
+ it('warns once when using getMeasurementsSummaryMap', function() {
241
+ var measurements = measure(() => {});
242
+ spyOn(console, 'error');
243
+ ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
244
+ expect(console.error.calls.length).toBe(1);
245
+ expect(console.error.argsForCall[0][0]).toContain(
246
+ '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' +
247
+ '`ReactPerf.getWasted(...)` instead.'
248
+ );
249
+
250
+ ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
251
+ expect(console.error.calls.length).toBe(1);
252
+ });
253
+
254
+ it('warns once when using printDOM', function() {
255
+ var measurements = measure(() => {});
256
+ spyOn(console, 'error');
257
+ ReactDefaultPerf.printDOM(measurements);
258
+ expect(console.error.calls.length).toBe(1);
259
+ expect(console.error.argsForCall[0][0]).toContain(
260
+ '`ReactPerf.printDOM(...)` is deprecated. Use ' +
261
+ '`ReactPerf.printOperations(...)` instead.'
262
+ );
263
+
264
+ ReactDefaultPerf.printDOM(measurements);
265
+ expect(console.error.calls.length).toBe(1);
266
+ });
267
+
268
});