Skip to content

Commit 5520c39

Browse files
committedMar 17, 2016
Merge pull request facebook#6287 from gaearon/rename-perf-methods
Rename ReactPerf methods to match the upcoming ReactPerf revamp
2 parents 8046cbd + ea55d66 commit 5520c39

File tree

3 files changed

+72
-5
lines changed

3 files changed

+72
-5
lines changed
 

‎docs/docs/10.9-perf.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,15 @@ Prints the overall time taken. If no argument's passed, defaults to all the meas
4141

4242
![](/react/img/docs/perf-wasted.png)
4343

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

4747
![](/react/img/docs/perf-dom.png)
4848

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+
4953
## Advanced API
5054

5155
The above print methods use `Perf.getLastMeasurements()` to pretty-print the result.

‎src/test/ReactDefaultPerf.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var ReactMount = require('ReactMount');
1818
var ReactPerf = require('ReactPerf');
1919

2020
var performanceNow = require('performanceNow');
21+
var warning = require('warning');
2122

2223
function roundFloat(val) {
2324
return Math.floor(val * 100) / 100;
@@ -62,6 +63,9 @@ function unwrapLegacyMeasurements(measurements) {
6263
return measurements && measurements.__unstable_this_format_will_change || measurements;
6364
}
6465

66+
var warnedAboutPrintDOM = false;
67+
var warnedAboutGetMeasurementsSummaryMap = false;
68+
6569
var ReactDefaultPerf = {
6670
_allMeasurements: [], // last item in the list is the current one
6771
_mountStack: [0],
@@ -120,6 +124,16 @@ var ReactDefaultPerf = {
120124
},
121125

122126
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) {
123137
measurements = unwrapLegacyMeasurements(measurements);
124138
var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(
125139
measurements,
@@ -136,14 +150,24 @@ var ReactDefaultPerf = {
136150

137151
printWasted: function(measurements) {
138152
measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
139-
console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));
153+
console.table(ReactDefaultPerf.getWasted(measurements));
140154
console.log(
141155
'Total time:',
142156
ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'
143157
);
144158
},
145159

146160
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) {
147171
measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
148172
var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
149173
console.table(summary.map(function(item) {

‎src/test/__tests__/ReactDefaultPerf-test.js

+42-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ describe('ReactDefaultPerf', function() {
2828
return now++;
2929
});
3030

31+
if (typeof console.table !== 'function') {
32+
console.table = () => {};
33+
console.table.isFake = true;
34+
}
35+
3136
React = require('React');
3237
ReactDOM = require('ReactDOM');
3338
ReactDefaultPerf = require('ReactDefaultPerf');
@@ -54,6 +59,12 @@ describe('ReactDefaultPerf', function() {
5459
});
5560
});
5661

62+
afterEach(function() {
63+
if (console.table.isFake) {
64+
delete console.table;
65+
}
66+
});
67+
5768
function measure(fn) {
5869
ReactDefaultPerf.start();
5970
fn();
@@ -68,7 +79,7 @@ describe('ReactDefaultPerf', function() {
6879
ReactDOM.render(<App />, container);
6980
});
7081

71-
var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
82+
var summary = ReactDefaultPerf.getWasted(measurements);
7283
expect(summary.length).toBe(2);
7384

7485
/*eslint-disable dot-notation */
@@ -94,7 +105,7 @@ describe('ReactDefaultPerf', function() {
94105
ReactDOM.render(<App flipSecond={true} />, container);
95106
});
96107

97-
var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
108+
var summary = ReactDefaultPerf.getWasted(measurements);
98109
expect(summary.length).toBe(1);
99110

100111
/*eslint-disable dot-notation */
@@ -108,7 +119,7 @@ describe('ReactDefaultPerf', function() {
108119

109120
function expectNoWaste(fn) {
110121
var measurements = measure(fn);
111-
var summary = ReactDefaultPerf.getMeasurementsSummaryMap(measurements);
122+
var summary = ReactDefaultPerf.getWasted(measurements);
112123
expect(summary).toEqual([]);
113124
}
114125

@@ -226,4 +237,32 @@ describe('ReactDefaultPerf', function() {
226237
expect(summary).toEqual([]);
227238
});
228239

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+
229268
});

0 commit comments

Comments
 (0)
Please sign in to comment.