From 677e9bc02a29e540e7c65e60b8e8cfb830099a65 Mon Sep 17 00:00:00 2001 From: Thomas Hintz Date: Thu, 8 Oct 2020 14:44:18 -0700 Subject: [PATCH] Adding diagram for measuring bottlenecks. --- high-performance-react.org | 64 ++++++++++++++---- manuscript/diagnosing-bottlenecks.markua | 16 +++-- .../resources/images/bottleneck-process.png | Bin 0 -> 52861 bytes 3 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 manuscript/resources/images/bottleneck-process.png diff --git a/high-performance-react.org b/high-performance-react.org index 88001eb..3c6f029 100644 --- a/high-performance-react.org +++ b/high-performance-react.org @@ -1084,24 +1084,58 @@ TODO useCallback :EXPORT_FILE_NAME: manuscript/diagnosing-bottlenecks.markua :END: -When trying to improve performance the most important and valuable -step in the process is identifying and diagnosing bottlenecks. You can -attempt to guess at how to write high-performance code from the start, -and to a small extent that can help, but with the complexity of the -web ecosystem today that is very unlikely to be sufficient. There are -just too many layers and components in the system to always get it -right. So inevitably you will run in to performance bottlenecks. - -There are six main steps to solving performance bottlenecks, with -some parts done in a cycle: - -- Describing the performance issue -- Measuring the issue -- Identifying the source of the problem +When your application is not performing as you would like or expect, +what can you do? What follows is my general approach to solving +performance bottlenecks with a focus on React specific tools. There is +an element of creativity to the process though so you should take this +more as a guide and not something set in stone. You can start here but +also try to find what works best for you. + +These are the six main steps I use to solve performance bottlenecks: + +- Describing the performance bottleneck +- Measuring the bottleneck +- Identifying the source - Diagnosing the cause - Generating possible solutions - Selecting and implementing a solution -- Measuring the issue again + +#+name: bottleneck-process +#+begin_src dot :file "./images/bottleneck-process.png" :exports results + digraph { + size="12!,4"; + rankdir=TB; + node [fontname="DejaVu Sans"]; + edge [fontname="DejaVu Sans"]; + describe [label="Describe", shape=rectangle, fillcolor=yellow, style=filled]; + measure [label="Measure", shape=oval]; + identify [label="Identify", shape=oval]; + diagnose [label="Diagnose", shape=oval]; + generate [label="Solve", shape=oval]; + select [label="Implement", shape=oval]; + complete [label="Bottleneck Eliminated", shape=rectangle, fillcolor=green, style=filled]; + describe -> measure; + measure -> identify; + identify -> diagnose; + diagnose -> generate; + generate -> select; + select -> measure; + measure -> complete; + { rank=same; describe; measure; complete; } + { rank=same; identify; diagnose; generate; select; } + } +#+end_src + +#+caption: Figure {{{n(FIGURE)}}}: Tree of components +#+attr_leanpub: :width 90% +#+RESULTS: bottleneck-process +[[file:./images/bottleneck-process.png]] + +As you can see in Figure {{{n(FIGURE, -)}}}, I use them in a cycle +centered around measuring the bottleneck. Having some way to measure +the bottleneck is extremely important. Without measuring you will not +always be able to tell if the changes you made in the cycle had any +effect. ** Describing Performance Issues diff --git a/manuscript/diagnosing-bottlenecks.markua b/manuscript/diagnosing-bottlenecks.markua index 2fa0e1e..0e4b348 100644 --- a/manuscript/diagnosing-bottlenecks.markua +++ b/manuscript/diagnosing-bottlenecks.markua @@ -1,16 +1,20 @@ # Identifying & Diagnosing Bottlenecks -When trying to improve performance the most important and valuable step in the process is identifying and diagnosing bottlenecks. You can attempt to guess at how to write high-performance code from the start, and to a small extent that can help, but with the complexity of the web ecosystem today that is very unlikely to be sufficient. There are just too many layers and components in the system to always get it right. So inevitably you will run in to performance bottlenecks. +When your application is not performing as you would like or expect, what can you do? What follows is my general approach to solving performance bottlenecks with a focus on React specific tools. There is an element of creativity to the process though so you should take this more as a guide and not something set in stone. You can start here but also try to find what works best for you. -There are six main steps to solving performance bottlenecks, with some parts done in a cycle: +These are the six main steps I use to solve performance bottlenecks: -* Describing the performance issue -* Measuring the issue -* Identifying the source of the problem +* Describing the performance bottleneck +* Measuring the bottleneck +* Identifying the source * Diagnosing the cause * Generating possible solutions * Selecting and implementing a solution -* Measuring the issue again + +{width: "90%", caption: "Figure 1: Tree of components"} +![Figure 1: Tree of components](./images/bottleneck-process.png) + +As you can see in Figure 1, I use them in a cycle centered around measuring the bottleneck. Having some way to measure the bottleneck is extremely important. Without measuring you will not always be able to tell if the changes you made in the cycle had any effect. ## Describing Performance Issues diff --git a/manuscript/resources/images/bottleneck-process.png b/manuscript/resources/images/bottleneck-process.png new file mode 100644 index 0000000000000000000000000000000000000000..325d7a285370cd4fa1096865563da1c39ff38255 GIT binary patch literal 52861 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 literal 0 HcmV?d00001