启用Hermes Engine后React Native应用运行变慢求助
问题描述
按照React Native官方文档步骤创建了名为AwesomeProject的新项目,React Native版本为^0.69.4。启用Hermes Engine后发现应用运行速度变慢,但预期是应用会更快或至少保持原有速度。
项目的package.json配置如下:
{ "name": "AwesomeProject", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", "test": "jest", "lint": "eslint ." }, "dependencies": { "react": "18.0.0", "react-native": "^0.69.4" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "babel-jest": "^26.6.3", "eslint": "^7.32.0", "jest": "^26.6.3", "metro-react-native-babel-preset": "0.72.3", "react-test-renderer": "18.1.0" }, "jest": { "preset": "react-native" } }
启用Hermes后的运行状态:
启用Hermes前的运行状态:
问题原因分析
- 开发模式特性限制:Hermes在开发模式下默认不启用字节码预编译,采用解释执行JS代码的方式,运行效率不如JSC(JavaScriptCore)。只有在生产模式下,Hermes才会提前编译字节码,启动速度和运行性能优势才会显现。你当前测试的是开发环境,出现性能下降属于正常现象。
- 版本适配细节问题:React Native 0.69.x与Hermes的适配存在部分优化空间,该版本中Hermes在开发模式下的调试开销(如源码映射、热重载兼容处理)比JSC更大,额外消耗了运行资源。
- 业务场景偏差:你的项目是刚创建的空项目,没有复杂JS逻辑渲染或计算场景。Hermes的优势主要体现在大型应用、大量JS执行的场景中,空项目下的性能差异来自引擎本身的启动和基础运行开销,此时Hermes的优势无法体现,反而可能因调试层额外处理变慢。
内容的提问来源于stack exchange,提问作者ChenTin'
相关产品推荐
相关产品推荐

