Skip to content

Make createClass 10-15% faster on complex specs - #5550

Merged
sophiebits merged 2 commits into
react:masterfrom
sophiebits:cc-speed
Dec 14, 2015
Merged

Make createClass 10-15% faster on complex specs#5550
sophiebits merged 2 commits into
react:masterfrom
sophiebits:cc-speed

Conversation

@sophiebits

Copy link
Copy Markdown
Collaborator

.

Running this is left as an exercise for the reader, since my measure.py isn't designed for this at present. But something like this might work:

```diff
diff --git a/scripts/bench/measure.py b/scripts/bench/measure.py
index 4cedf47..627ec97 100755
--- a/scripts/bench/measure.py
+++ b/scripts/bench/measure.py
@@ -79,15 +79,12 @@ def _measure_ssr_ms(engine, react_path, bench_name, bench_path, measure_warm):
             if (typeof React !== 'object') throw new Error('React not laoded');
             report('factory_ms', END - START);

-            globalEval(readFile(ENV.bench_path));
-            if (typeof Benchmark !== 'function') {
-              throw new Error('benchmark not loaded');
-            }
+            globalEval("bm = (function(){" + readFile("bench-createclass-madman.js") + "})");
+            bm();
             var START = now();
-            var html = React.renderToString(React.createElement(Benchmark));
-            html.charCodeAt(0);  // flatten ropes
+            bm();
             var END = now();
-            report('ssr_' + ENV.bench_name + '_cold_ms', END - START);
+            report('cc_' + ENV.bench_name + '_cold_ms', END - START);

             var warmup = ENV.measure_warm ? 80 : 0;
             var trials = ENV.measure_warm ? 40 : 0;
@@ -119,7 +116,7 @@ def _main():
         return 1
     react_path = sys.argv[1]

-    trials = 30
+    trials = 60
     sys.stderr.write("Measuring SSR for PE benchmark (%d trials)\n" % trials)
     for i in range(trials):
         for engine in [
@@ -132,7 +129,7 @@ def _main():
         sys.stderr.flush()
     sys.stderr.write("\n")

-    trials = 3
+    trials = 0#3
     sys.stderr.write("Measuring SSR for PE with warm JIT (%d slow trials)\n" % trials)
     for i in range(trials):
         for engine in [
```
@mridgway

Copy link
Copy Markdown
Contributor

I like this. 👍

@sophiebits

Copy link
Copy Markdown
Collaborator Author

Since createClass doesn't take that much time, the absolute gains here aren't great – maybe a few ms for a typical app with a hundred components – but this should still be an improvement.

@sebmarkbage

Copy link
Copy Markdown
Contributor

k

sophiebits added a commit that referenced this pull request Dec 14, 2015
Make createClass 10-15% faster on complex specs
@sophiebits
sophiebits merged commit 3997164 into react:master Dec 14, 2015
mrizwanashiq pushed a commit to mrizwanashiq/react that referenced this pull request Jun 25, 2026
Make createClass 10-15% faster on complex specs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants