snipt

Ctrl+h for KB shortcuts

JavaScript

React Perf Snippet

/**
 * Use this when profiling React to add a button to the page that will stop profiling and 
 * print the wasted time/renders to the console when clicked.
 * The button will remove itself when done.
 */
(function() {
    // Create a button :-)
    const stopButton = document.createElement('button');
    stopButton.textContent = 'Perf.stop()';
    stopButton.style.cssText = `
        position: fixed;
        top: 0; 
        left: 0;
        padding: 10px;
        opacity: 0.5;
    `;

    // Stop React Perf profiling and print wasted time/renders
    // Then remove the event handler and the button
    stopButton.addEventListener('click', () => {
        React.addons.Perf.stop();
        React.addons.Perf.printWasted()
        stopButton.removeEventListener('click', stopButton);
        document.body.removeChild(stopButton);
    });

	// Add the button to the DOM and start React Perf
    document.body.appendChild(stopButton);
    React.addons.Perf.start();
}());

Description

use this snippet (e.g. in Chrome snippets) to start profiling React peformance. It will add a button to the page you can then use to stop profiling and print the results.
https://snipt.net/embed/58b7d627f9ade7e58282bac3fe29c030/
/raw/58b7d627f9ade7e58282bac3fe29c030/
58b7d627f9ade7e58282bac3fe29c030
js
JavaScript
31
2019-08-18T21:12:11
True
False
False
Sep 29, 2016 at 06:27 PM
/api/public/snipt/147893/
react-perf-snippet
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a> <a href="#L-23">23</a> <a href="#L-24">24</a> <a href="#L-25">25</a> <a href="#L-26">26</a> <a href="#L-27">27</a> <a href="#L-28">28</a> <a href="#L-29">29</a> <a href="#L-30">30</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="cm">/**</span> </span><span id="L-2"><a name="L-2"></a><span class="cm"> * Use this when profiling React to add a button to the page that will stop profiling and </span> </span><span id="L-3"><a name="L-3"></a><span class="cm"> * print the wasted time/renders to the console when clicked.</span> </span><span id="L-4"><a name="L-4"></a><span class="cm"> * The button will remove itself when done.</span> </span><span id="L-5"><a name="L-5"></a><span class="cm"> */</span> </span><span id="L-6"><a name="L-6"></a><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> </span><span id="L-7"><a name="L-7"></a> <span class="c1">// Create a button :-)</span> </span><span id="L-8"><a name="L-8"></a> <span class="kr">const</span> <span class="nx">stopButton</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">&#39;button&#39;</span><span class="p">);</span> </span><span id="L-9"><a name="L-9"></a> <span class="nx">stopButton</span><span class="p">.</span><span class="nx">textContent</span> <span class="o">=</span> <span class="s1">&#39;Perf.stop()&#39;</span><span class="p">;</span> </span><span id="L-10"><a name="L-10"></a> <span class="nx">stopButton</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">cssText</span> <span class="o">=</span> <span class="sb">`</span> </span><span id="L-11"><a name="L-11"></a><span class="sb"> position: fixed;</span> </span><span id="L-12"><a name="L-12"></a><span class="sb"> top: 0; </span> </span><span id="L-13"><a name="L-13"></a><span class="sb"> left: 0;</span> </span><span id="L-14"><a name="L-14"></a><span class="sb"> padding: 10px;</span> </span><span id="L-15"><a name="L-15"></a><span class="sb"> opacity: 0.5;</span> </span><span id="L-16"><a name="L-16"></a><span class="sb"> `</span><span class="p">;</span> </span><span id="L-17"><a name="L-17"></a> </span><span id="L-18"><a name="L-18"></a> <span class="c1">// Stop React Perf profiling and print wasted time/renders</span> </span><span id="L-19"><a name="L-19"></a> <span class="c1">// Then remove the event handler and the button</span> </span><span id="L-20"><a name="L-20"></a> <span class="nx">stopButton</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">&#39;click&#39;</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span> </span><span id="L-21"><a name="L-21"></a> <span class="nx">React</span><span class="p">.</span><span class="nx">addons</span><span class="p">.</span><span class="nx">Perf</span><span class="p">.</span><span class="nx">stop</span><span class="p">();</span> </span><span id="L-22"><a name="L-22"></a> <span class="nx">React</span><span class="p">.</span><span class="nx">addons</span><span class="p">.</span><span class="nx">Perf</span><span class="p">.</span><span class="nx">printWasted</span><span class="p">()</span> </span><span id="L-23"><a name="L-23"></a> <span class="nx">stopButton</span><span class="p">.</span><span class="nx">removeEventListener</span><span class="p">(</span><span class="s1">&#39;click&#39;</span><span class="p">,</span> <span class="nx">stopButton</span><span class="p">);</span> </span><span id="L-24"><a name="L-24"></a> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">stopButton</span><span class="p">);</span> </span><span id="L-25"><a name="L-25"></a> <span class="p">});</span> </span><span id="L-26"><a name="L-26"></a> </span><span id="L-27"><a name="L-27"></a> <span class="c1">// Add the button to the DOM and start React Perf</span> </span><span id="L-28"><a name="L-28"></a> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">stopButton</span><span class="p">);</span> </span><span id="L-29"><a name="L-29"></a> <span class="nx">React</span><span class="p">.</span><span class="nx">addons</span><span class="p">.</span><span class="nx">Perf</span><span class="p">.</span><span class="nx">start</span><span class="p">();</span> </span><span id="L-30"><a name="L-30"></a><span class="p">}());</span> </span></pre></div> </td></tr></table>
"chrome snippet", javascript, perf, react
--- 
+++ 
@@ -1,7 +1,12 @@
+/**
+ * Use this when profiling React to add a button to the page that will stop profiling and 
+ * print the wasted time/renders to the console when clicked.
+ * The button will remove itself when done.
+ */
 (function() {
-    // Create a button
+    // Create a button :-)
     const stopButton = document.createElement('button');
-    stopButton.textContent = 'Stop React Perfing';
+    stopButton.textContent = 'Perf.stop()';
     stopButton.style.cssText = `
         position: fixed;
         top: 0; 
--- 
+++ 
@@ -1,4 +1,5 @@
 (function() {
+    // Create a button
     const stopButton = document.createElement('button');
     stopButton.textContent = 'Stop React Perfing';
     stopButton.style.cssText = `
@@ -9,6 +10,8 @@
         opacity: 0.5;
     `;
 
+    // Stop React Perf profiling and print wasted time/renders
+    // Then remove the event handler and the button
     stopButton.addEventListener('click', () => {
         React.addons.Perf.stop();
         React.addons.Perf.printWasted()
@@ -16,6 +19,7 @@
         document.body.removeChild(stopButton);
     });
 
+	// Add the button to the DOM and start React Perf
     document.body.appendChild(stopButton);
     React.addons.Perf.start();
 }());
--- 
+++ 
@@ -0,0 +1,21 @@
+(function() {
+    const stopButton = document.createElement('button');
+    stopButton.textContent = 'Stop React Perfing';
+    stopButton.style.cssText = `
+        position: fixed;
+        top: 0; 
+        left: 0;
+        padding: 10px;
+        opacity: 0.5;
+    `;
+
+    stopButton.addEventListener('click', () => {
+        React.addons.Perf.stop();
+        React.addons.Perf.printWasted()
+        stopButton.removeEventListener('click', stopButton);
+        document.body.removeChild(stopButton);
+    });
+
+    document.body.appendChild(stopButton);
+    React.addons.Perf.start();
+}());