From 5e161764ca1979fc6552735ed81b1c7a90f942bd Mon Sep 17 00:00:00 2001 From: Cheng Lou Date: Sat, 12 Jul 2014 12:12:03 -0700 Subject: [PATCH] [Docs] Perf tools Fixes #1814. @petehunt @joshduck The images look blurry (taken on retina then shrank down to 50%...) --- _data/nav_docs.yml | 2 + docs/09.7-pure-render-mixin.md | 1 + docs/09.8-perf.md | 70 +++++++++++++++++++++++++++++++++ img/docs/perf-dom.png | Bin 0 -> 14889 bytes img/docs/perf-exclusive.png | Bin 0 -> 18508 bytes img/docs/perf-inclusive.png | Bin 0 -> 23056 bytes img/docs/perf-wasted.png | Bin 0 -> 28554 bytes 7 files changed, 73 insertions(+) create mode 100644 docs/09.8-perf.md create mode 100644 img/docs/perf-dom.png create mode 100644 img/docs/perf-exclusive.png create mode 100644 img/docs/perf-inclusive.png create mode 100644 img/docs/perf-wasted.png diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml index 0744fa03..2e34cf08 100644 --- a/_data/nav_docs.yml +++ b/_data/nav_docs.yml @@ -57,6 +57,8 @@ title: Immutability Helpers - id: pure-render-mixin title: PureRenderMixin + - id: perf + title: Performance Tools - title: Reference items: - id: top-level-api diff --git a/docs/09.7-pure-render-mixin.md b/docs/09.7-pure-render-mixin.md index 2235dceb..ca6930ec 100644 --- a/docs/09.7-pure-render-mixin.md +++ b/docs/09.7-pure-render-mixin.md @@ -4,6 +4,7 @@ title: PureRenderMixin layout: docs permalink: pure-render-mixin.html prev: update.html +next: perf.html --- If your React component's render function is "pure" (in other words, it renders the same result given the same props and state), you can use this mixin for a considerable performance boost. diff --git a/docs/09.8-perf.md b/docs/09.8-perf.md new file mode 100644 index 00000000..c1b45cfb --- /dev/null +++ b/docs/09.8-perf.md @@ -0,0 +1,70 @@ +--- +id: perf +title: Performance Tools +layout: docs +permalink: perf.html +prev: pure-render-mixin.html +--- + +React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate](/react/docs/component-specs.html#updating-shouldcomponentupdate) hook where you can add optimization hints to React's diff algorithm. + +In addition to giving you an overview of your app's overall performance, ReactPerf is a profiling tool that tells you exactly where you need to put these hooks. + +> Note: +> +> The dev build of React is slower than the prod build, due to all the extra logic for providing, for example, React's friendly console warnings (stripped away in the prod build). Therefore, the profiler only serves to indicate the _relatively_ expensive parts of your app. + +## General API + +### `Perf.start()` and `Perf.stop()` +Start/stop the measurement. The React operations in-between are recorded for analyses below. Operations that took an insignificant amount of time are ignored. + +### `Perf.printInclusive(measurements)` +Prints the overall time taken. If no argument's passed, defaults to all the measurements from the last recording. This prints a nicely formatted table in the console, like so: + +![](/react/img/docs/perf-inclusive.png) + +### `Perf.printExclusive(measurements)` +"Exclusive" times don't include the times taken to mount the components: processing props, `getInitialState`, call `componentWillMount` and `componentDidMount`, etc. + +![](/react/img/docs/perf-exclusive.png) + +### `Perf.printWasted(measurements)` + +**The most useful part of the profiler**. + +"Wasted" time is spent on components that didn't actually render anything, e.g. the render stayed the same, so the DOM wasn't touched. + +![](/react/img/docs/perf-wasted.png) + +### `Perf.printDOM(measurements)` +Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove". + +![](/react/img/docs/perf-dom.png) + +## Advanced API + +The above print methods use `Perf.getLastMeasurements()` to pretty-print the result. + +### `Perf.getLastMeasurements()` +Get the measurements array from the last start-stop session. The array contains objects, each of which looks like this: + +```js +{ + // The term "inclusive" and "exclusive" are explained below + "exclusive": {}, + // '.0.0' is the React ID of the node + "inclusive": {".0.0": 0.0670000008540228, ".0": 0.3259999939473346}, + "render": {".0": 0.036999990697950125, ".0.0": 0.010000003385357559}, + // Number of instances + "counts": {".0": 1, ".0.0": 1}, + // DOM touches + "writes": {}, + // Extra debugging info + "displayNames": { + ".0": {"current": "App", "owner": ""}, + ".0.0": {"current": "Box", "owner": "App"} + }, + "totalTime": 0.48499999684281647 +} +``` diff --git a/img/docs/perf-dom.png b/img/docs/perf-dom.png new file mode 100644 index 0000000000000000000000000000000000000000..11c6f1070eaac399dc7622e00d17a5773512b9d8 GIT binary patch literal 14889 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 literal 0 HcmV?d00001 diff --git a/img/docs/perf-exclusive.png b/img/docs/perf-exclusive.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2c0efd1af84c1aa9ec4bbc659132dee90b4f0d GIT binary patch literal 18508 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

SCQl1DV!`hf06zjvM`G@jSf?-FFg7bY5-| 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 bm`(eCc_`30M_w#z00000NkvXXu0mjfFLX+M literal 0 HcmV?d00001 diff --git a/img/docs/perf-inclusive.png b/img/docs/perf-inclusive.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca30a883402db5c97469926c78336c842614da5 GIT binary patch literal 23056 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 literal 0 HcmV?d00001 diff --git a/img/docs/perf-wasted.png b/img/docs/perf-wasted.png new file mode 100644 index 0000000000000000000000000000000000000000..2246dac5acdf2b926c4e464748b36394c028716f GIT binary patch literal 28554 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