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