{"id":17045475,"url":"https://github.com/kudo/react-native-js-benchmark","last_synced_at":"2025-04-12T15:22:30.421Z","repository":{"id":41891144,"uuid":"194899591","full_name":"Kudo/react-native-js-benchmark","owner":"Kudo","description":"JavaScript Engine Benchmark for React Native","archived":false,"fork":false,"pushed_at":"2023-03-17T05:46:07.000Z","size":1589,"stargazers_count":110,"open_issues_count":7,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-04T05:30:59.171Z","etag":null,"topics":["javascriptcore","react-native","v8"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kudo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-02T16:33:23.000Z","updated_at":"2025-03-12T01:09:18.000Z","dependencies_parsed_at":"2024-11-07T14:01:36.989Z","dependency_job_id":"53781aa4-ed68-4573-8b74-25a72f260c59","html_url":"https://github.com/Kudo/react-native-js-benchmark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kudo%2Freact-native-js-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kudo%2Freact-native-js-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kudo%2Freact-native-js-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kudo%2Freact-native-js-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kudo","download_url":"https://codeload.github.com/Kudo/react-native-js-benchmark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248586633,"owners_count":21129071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascriptcore","react-native","v8"],"created_at":"2024-10-14T09:37:32.435Z","updated_at":"2025-04-12T15:22:30.391Z","avatar_url":"https://github.com/Kudo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JavaScript Engine Benchmark for React Native\n\n## Benchmark Results\n\n[RN 0.62.2, JSC 250230, V8 8.0, Hermes 0.4.1](https://docs.google.com/spreadsheets/d/1XB6fuk-NYZbCDikxQOAJemE-P8cfbsfdXivTeVwcwIk/edit?usp=sharing)\n\n[RN 0.60.3, JSC 245459, V8 7.5.1, Hermes 0.1.0](https://docs.google.com/spreadsheets/d/1uce3WZ9IaAEUu6Owj3eXEuZb25PDi6ZcgUVV2i500S0/edit#gid=1258377944)\n\nThese benchmarks ran on Samsung Galaxy Note 5\n\n## Benchmarks\n\n### React Rendering\n\n- RenderComponentThroughput\n  \n  The series of test cases aim to measure how many React component could be rendered within some intervals. \n  \n  - RenderComponentThroughput 10s\n  - RenderComponentThroughput 60s\n  - RenderComponentThroughput 180s\n  \n  The reason that have different interval is that to assume JIT will start to work after longer repetitive executions.\n   \n  **Higher result is better**\n\n### TTI (Time-To-Interaction)\n\nThe series of test cases aim to measure how long JS engine parse and evaluate the scripts.\nTTI time is from the `content_appear_view_time - before_start_ReactInstanceManager_time`.\nIn different test cases, we try to generate different size of JS bundle and compare if size matters.\n\n  - TTI ~3 MiB bundle\n  - TTI ~10 MiB bundle\n  - TTI ~15 MiB bundle\n\n### APK Size\n\nSimply the comparion of library binary size and final APK size.\n\n## How to Run the Benchmark\n\nPrerequisites:\n\n- macOS 10.14 (Other macOS versions or Linux might be supported, but I don't verify that)\n- Python 3\n- Node 8+\n\nSimply to run\n\n```sh\npython start.py -a\n```\n\n## Disclaimer\n\nThis project is specific to measure JS engine performance for React Native. It is not designated to do generic JS engine comparison.\n\nFor 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.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkudo%2Freact-native-js-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkudo%2Freact-native-js-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkudo%2Freact-native-js-benchmark/lists"}