13af6ab5fSopenharmony_ci# es2abc-benchmark 23af6ab5fSopenharmony_ci 33af6ab5fSopenharmony_ci## 项目说明 43af6ab5fSopenharmony_ci 本项目旨在对es2abc编译js时的性能进行测试并输出测试结果报告。 53af6ab5fSopenharmony_ci 本项目依赖python3、git以及ets_frontend组件下的es2abc可执行文件。 63af6ab5fSopenharmony_ci 其中测试用例默认存放在`test_cases`目录,运行结果存放在`output`目录。 73af6ab5fSopenharmony_ci## 用法说明 83af6ab5fSopenharmony_ci### 工具运行 93af6ab5fSopenharmony_ci#### 参数说明 103af6ab5fSopenharmony_ci| 参数 | 描述 | 类型 | 默认值 | 113af6ab5fSopenharmony_ci| :-----------: |:---------------------------------------------------:| :----: | :--------------------------------------: | 123af6ab5fSopenharmony_ci| --es2abc-tool | 这个参数是必需的,需要提供一个es2abc工具的路径。 | string | N/A | 133af6ab5fSopenharmony_ci| --runs | 这个参数是可选的,默认值为20。表示一次测试中执行用例的次数。 | int | 20 | 143af6ab5fSopenharmony_ci| --opt-level | 这个参数是可选的,它指定了编译器的优化级别。 | string | 0 | 153af6ab5fSopenharmony_ci| --parse-only | 这个参数是可选的,默认值为False。如果设置为True,那么在测试期间,只会解析输入文件。 | bool | False | 163af6ab5fSopenharmony_ci| --engine-comp | 这个参数是可选的,默认值为False,此时,只进行es2abc测试,为True时与Hermes引擎对比 | bool | False | 173af6ab5fSopenharmony_ci#### 测试用例说明 183af6ab5fSopenharmony_ci 本项目测试套件及测试用例来源于开源库: 193af6ab5fSopenharmony_ci##### 测试套件: 203af6ab5fSopenharmony_ci | 名称 | 描述 | GitHub 地址 | 213af6ab5fSopenharmony_ci | :--: | :--: | :--: | 223af6ab5fSopenharmony_ci | Octane | JavaScript基准测试套件,用于评估浏览器在处理复杂JavaScript任务时的性能 | [https://github.com/chromium/octane](https://github.com/chromium/octane) | 233af6ab5fSopenharmony_ci | Kraken | JavaScript性能测试套件,包含一系列的测试用例,涵盖了诸如动态场景、垃圾回收、加密和图形操作等方面 | [https://github.com/mozilla/krakenbenchmark.mozilla.org](https://github.com/mozilla/krakenbenchmark.mozilla.org) | 243af6ab5fSopenharmony_ci | SunSpider | JavaScript性能测试套件,用于评估JavaScript引擎在执行一些常见任务时的性能 | [https://github.com/mozilla/krakenbenchmark.mozilla.org](https://github.com/mozilla/krakenbenchmark.mozilla.org) | 253af6ab5fSopenharmony_ci 263af6ab5fSopenharmony_ci#### 对比引擎 273af6ab5fSopenharmony_ci 运行本benchmark时可进行es2abc编译性能与hermes编译性能对比,hermes引擎GitHub地址:https://github.com/facebook/hermes 283af6ab5fSopenharmony_ci#### 运行示例 293af6ab5fSopenharmony_ci脚本运行时依赖ets_frontend组件编译后的es2abc可执行文件 303af6ab5fSopenharmony_cies2abc编译命令: 313af6ab5fSopenharmony_ci 323af6ab5fSopenharmony_ci``` 333af6ab5fSopenharmony_ci$ ./build.sh --product-name rk3568 --build-target ets_frontend_build 343af6ab5fSopenharmony_ci``` 353af6ab5fSopenharmony_ci指定es2abc可执行文件,运行`run_benchmark.py`进行测试: 363af6ab5fSopenharmony_ci``` 373af6ab5fSopenharmony_ci$ python3 run_benchmark.py --es2abc-tool /out/xx/xx/xx/ets_frontend/es2abc 383af6ab5fSopenharmony_ci``` 393af6ab5fSopenharmony_ci与hermes引擎进行对比: 403af6ab5fSopenharmony_ci``` 413af6ab5fSopenharmony_ci$ python3 run_benchmark.py --es2abc-tool /out/xx/xx/xx/ets_frontend/es2abc --engine-comp 423af6ab5fSopenharmony_ci``` 433af6ab5fSopenharmony_ci指定测试用例编译轮数(默认为20轮): 443af6ab5fSopenharmony_ci``` 453af6ab5fSopenharmony_ci$ python3 run_benchmark.py --es2abc-tool /out/xx/xx/xx/ets_frontend/es2abc --runs 10 463af6ab5fSopenharmony_ci``` 473af6ab5fSopenharmony_ci--parse-only 只对测试用例做解析动作,使用参数 --engine-comp时,本参数失效: 483af6ab5fSopenharmony_ci``` 493af6ab5fSopenharmony_ci$ python3 run_benchmark.py --es2abc-tool /out/xx/xx/xx/ets_frontend/es2abc --parse-only 503af6ab5fSopenharmony_ci``` 513af6ab5fSopenharmony_ci--opt-level 指定编译优化等级,使用参数 --engine-comp时,本参数失效: 523af6ab5fSopenharmony_ci``` 533af6ab5fSopenharmony_ci$ python3 run_benchmark.py --es2abc-tool /out/xx/xx/xx/ets_frontend/es2abc --opt-level '2' 543af6ab5fSopenharmony_ci``` 553af6ab5fSopenharmony_ci生成的测试结果存放至 `output` 目录,命令行打印基本的测试信息,如: 563af6ab5fSopenharmony_ci 573af6ab5fSopenharmony_ci```plain 583af6ab5fSopenharmony_ci> > > benchmark running 593af6ab5fSopenharmony_ciRunning navier-stokes.... 603af6ab5fSopenharmony_ciRunning typescript.... 613af6ab5fSopenharmony_ciRunning mandreel.... 623af6ab5fSopenharmony_ci``` 633af6ab5fSopenharmony_ci### 注意事项 643af6ab5fSopenharmony_ci 本工具依赖ets_frontend组件编译产物es2abc可执行文件,使用时需指定es2abc路径。 653af6ab5fSopenharmony_ci 本工具测试用例为开源用例,测试套件在运行时自动拉取。 663af6ab5fSopenharmony_ci 67