Skip to content
JavaScript Engine Benchmark for React Native
Python Java JavaScript
Branch: master
Clone or download
dependabot and Kudo Bump lodash from 4.17.11 to 4.17.15
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.11...4.17.15)

Signed-off-by: dependabot[bot] <support@github.com>
Latest commit f9e079f Jul 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
__tests__ Init project from RN template Jul 2, 2019
android Add Hermes into benchmark Jul 16, 2019
lib
src Add TTI benchmark Jul 5, 2019
.buckconfig Init project from RN template Jul 2, 2019
.eslintrc.js Init project from RN template Jul 2, 2019
.flowconfig Init project from RN template Jul 2, 2019
.gitattributes Init project from RN template Jul 2, 2019
.gitignore Add prettier output Jul 5, 2019
.watchmanconfig Init project from RN template Jul 2, 2019
App.js Add TTI benchmark Jul 5, 2019
LICENSE Initial commit Jul 2, 2019
README.md Update README.md Jul 5, 2019
app.json Init project from RN template Jul 2, 2019
babel.config.js Init project from RN template Jul 2, 2019
index.js Fix lint issues Jul 2, 2019
metro.config.js Fix APK build break Jul 5, 2019
package.json Upgrade to RN v0.60.3 Jul 16, 2019
prettier.config.js Add RenderComponentThroughput benchmark Jul 2, 2019
start.py Add Hermes into benchmark Jul 16, 2019
yarn.lock Bump lodash from 4.17.11 to 4.17.15 Jul 25, 2019

README.md

JavaScript Engine Benchmark for React Native

Measure Result

The result will keep to be updated at Google SpreadSheets

These benchmarks ran on Samsung Galaxy Note 5

Benchmarks

React Rendering

  • RenderComponentThroughput

    The series of test cases aim to measure how many React component could be rendered within some intervals.

    • RenderComponentThroughput 10s
    • RenderComponentThroughput 60s
    • RenderComponentThroughput 180s

    The reason that have different interval is that to assume JIT will start to work after longer repetitive executions.

    Higher result is better

TTI (Time-To-Interaction)

The series of test cases aim to measure how long JS engine parse and evaluate the scripts. TTI time is from the content_appear_view_time - before_start_ReactInstanceManager_time. In different test cases, we try to generate different size of JS bundle and compare if size matters.

  • TTI ~3 MiB bundle
  • TTI ~10 MiB bundle
  • TTI ~15 MiB bundle

How to Run the Benchmark

Prerequisites:

  • macOS 10.14 (Other macOS versions or Linux might be supported, but I don't verify that)
  • Python 3
  • Node 8+

Simply to run

python start.py -a

Disclaimer

This project is specific to measure JS engine performance for React Native. It is not designated to do generic JS engine comparison.

For example, on React Native Android, we don't enable all JIT tiers on JavaScriptCore. On V8, I am currently trying to use the JIT-less mode. What I am trying to do is balancing between good enough performance, low memory usage, and small binary size. That is why to disable JIT sometimes.

You can’t perform that action at this time.