• Home
Name Date Size #Lines LOC

..--

README.mdD12-May-202410.7 KiB162123

config.jsonD12-May-2024583 1616

run_js_perf_test.shD12-May-20242.4 KiB8557

run_js_test.pyD12-May-202430.6 KiB763631

README.md

1# 运行方舟编译器工作负载
2
3## 介绍
4
5自动化运行js性能测试用例并且生成daily报告,用于测试方舟builtins API 性能。
6
7特殊说明:下面文字中的"v 8" 、"v_8"、"d 8"、"d_8", 是为了规避门禁codecheck告警,请阅读及实际执行时去除或忽略中间的空格或”_“。
8
9## 环境依赖
10
11- 对于脚本所在的文件目录,当前用户需要拥有创建文件夹的权限。请注意当前目录的用户和用户组权限设置
12
13- openpyxl。没有版本要求。若未安装请执行`pip3 install openpyxl`
14
15- 环境中需要下载全仓鸿 蒙镜像或独立仓代码,并进行编译ark_js_vm 和 前端
16
17  ```shell
18  ./build.sh --product-name rk3568 --build-target ark_js_host_linux_tools_packages --build-target ets_frontend_build # x86_64平台
19  ```
20
21- 配置v 8引擎执行环境
22
23**下载:**
24
25```shell
26# 可以在任意目录。假定当前目录在/home目录
27wget https://storage.googleapis.com/chromium-%76%38/official/canary/%76%38-linux64-rel-12.0.267.zip --no-check-certificate -O v_8-linux64-rel-12.0.267.zip
28unzip v_8-linux64-rel-12.0.267.zip -d v_8
29```
30
31**配置:**
32
33临时配置:
34
35每次执行run_js_perf_test.sh脚本时传入 v 8 引擎 d 8 二进制的路径,比如/home/v_8/d 8。
36
37永久配置:
38
39```shell
40sudo su
41# 编辑/root/.bashrc文件在末尾追加以下内容
42export PATH=/home/v_8:$PATH
43# 刷新环境变量。注意执行sh脚本依然需要传入d 8的路径
44source /root/.bashrc
45```
46
47**验证:**
48
49```shell
50执行:
51	/home/v_8/d 8 -v # 任意用户
52回显:
53	V 8 version 12.0.267
54	d 8>
55```
56
57环境v 8引擎配置成功
58
59## 文件目录
60
61```bash
62/arkcompiler/ets_runtime
63│_ test                   # 模块测试用例
64    |_ jsperftest         # js perf 测试代码目录
65		 |-README.md      # 说明书
66		 |-run_js_perf_test.sh # 测试执行shell脚本
67		 |_run_js_test.py # 测试执行调用的python脚本
68		 |_config.json    # 代码仓库与平台配置文件
69```
70
71**代码仓库与平台配置文件config.json说明:**
72
73**文件内容:**
74
75```shell
76{
77	"full_x86_64":{
78		"ETS_RUNTIME_PATH": "out/rk3568/c lang_x64/arkcompiler/ets_runtime/",
79		"ICU_PATH": "out/rk3568/c lang_x64/thirdparty/icu/",
80		"ZLIB_PATH": "out/rk3568/c lang_x64/thirdparty/zlib/",
81		"LIB_PATH": "prebuilts/c lang/ohos/linux-x86_64/l lvm/lib/",
82		"ES2ABC": "out/rk3568/c lang_x64/arkcompiler/ets_frontend/es2abc"
83	},
84	"independent_x86_64": {
85		"ETS_RUNTIME_PATH": "out/x64.release/arkcompiler/ets_runtime",
86		"ICU_PATH": "out/x64.release/c lang_x64/thirdparty/icu/",
87		"ZLIB_PATH": "",  	# 若无此配置,可不填,但不能删除该配置项
88		"LIB_PATH": "",		# 若无此配置,可不填,但不能删除该配置项
89		"ES2ABC": "out/x64.release/arkcompiler/ets_frontend/es2abc"
90	}
91}
92```
93
94**说明:**
95
96- 请无视“c lang"中间的空格,文件实际内容是无空格,这里是为了屏蔽门禁codecheck告警
97- 在不同的代码仓库在不同的OS平台上,脚本运行需要的二进制的路径是不同的。脚本无法全覆盖。因此需要用户自己配置仓库信息和脚本执行平台信息
98- full表示是全仓--鸿 蒙镜像下的代码仓;independent表示独立仓(区别于全仓)
99- 脚本执行平台都是linux环境。默认全仓, full_x86_64。x86_64表示是x86 64位平台;aarch_64表示是arm 64位平台
100- 请用户根据自己的环境需要在config.json中配置仓库与执行平台信息。并将json主键(比如full_x86_64)作为可选的第四参数传递给sh脚本
101
102## 运行测试
103
1041) 调用入口:bash run_js_perf_test.sh js_report_save_path openharmony_path d_8_binary_path ver_platform
105   * js_report_save_path:必选],表示报告输出的目录路径,该路径同时也是历史报告绝 对路径
106   * openharmony_path:  必选],将全仓鸿 蒙系统或者独立仓根目录(out的父目录)的绝 对路径
107   * d_8_binary_path: [必选],v 8 引擎 d 8 二进制的绝 对路径
108   * ver_platform: [可选],代码仓库与平台配置模式。不配置默认值“full_x86_64”,表示全仓 x86_64平台执行
109
1103) 运行生成看护报告说明
111    ```bash
112    1. jsperftest生成的daily报告,excel格式
113    	命名格式:js_perf_test_result_年月日.xlsx,比如js_perf_test_result_20231206.xlsx114    2. 报告表格表头输出"用例名称"、"场景"、"执行状态"、"ark用例执行耗时(ms)"、"昨日ark用例执行耗时(ms)"、"是否劣化"、"v 8(ms)"、"v 8 --jitless(ms)"、"ark/v 8"、"ark/v 8 jitless"、"hyperlink"、"备注";
115       表格最后,会追加汇总信息:用例数总数、执行成功数、失败数,劣化数目等内容。具体内容,请参见附录“daily报告”。
116    3. 有执行失败时,当前用例的“执行状态”单元格内容会标记。
117    4. “是否劣化”列,取值:true,false。当用例前一天性能数据不存在、js用例执行异常、执行失败,都归于没有劣化。
118    5. 在daily报告生成目录,daily报告每日生成时会同时生成通知邮件汇总内容的文件--jsperftest_notifying_info_in_email.json。内容如下:
119    	{
120        	"kind": "V 8 js-perf-test",
121        	"Total": 7,
122        	"Ark劣化v 8": 1,
123        	"Ark劣化v 8 jitless": 4
124        }
125    ```
126
127## daily报告
128
129请参见附录"Daily报告"。
130
131## workload代码仓
132
133  [Ark-workload](https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/)
134
135## 附录
136
137### Daily报告
138
139| 用例名称                                                | 场景               | 执行状态       | ark用例执行耗时(ms) | 是否劣化 | v 8(ms) | v 8 --jitless(ms) | ark/v 8              | ark/v 8 jitless    | hyperlink                                                    | 备注 |
140| ------------------------------------------------------- | ------------------ | -------------- | ------------------- | -------- | ------ | ---------------- | ------------------- | ------------------ | ------------------------------------------------------------ | ---- |
141| decodeuricomponent/decodeuricomponent.js                | decodeuricomponent | pass           | 42                  | NA       | 18     | 33               | 2.33 | 1.27 | https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/js-perf-test/decodeuricomponent/decodeuricomponent.js |      |
142| finalizationregistry/finalizationregistryconstructor.js | testconstructor    | pass           | 6                   | NA       | 10     | 26               | 0.6 | 0.23            | https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/js-perf-test/finalizationregistry/finalizationregistryconstructor.js |      |
143| finalizationregistry/register.js                        | testregister       | pass           | 16                  | NA       | 14     | 44               | 1.14        | 0.36            | https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/js-perf-test/finalizationregistry/register.js |      |
144| finalizationregistry/unregister.js                      | testunregister     | pass           | 20                  | NA       | 51     | 99               | 0.39            | 0.20           | https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/js-perf-test/finalizationregistry/unregister.js |      |
145| decodeuri/decodeuri.js                                  | decodeuri          | pass           | 46                  | NA       | 19     | 36               | 2.42 | 1.28 | https://gitee.com/dov1s/arkjs-perf-test/tree/builtins_test1110/js-perf-test/decodeuri/decodeuri.js |      |
146|                                                         |                    |                |                     |          |        |                  |                     |                    |                                                              |      |
147|                                                         |                    |                |                     |          |        |                  |                     |                    |                                                              |      |
148| 劣化判定比率上限                                        |                    | 0.05           |                     |          |        |                  |                     |                    |                                                              |      |
149| Totle js case count                                     |                    | 5           |                     |          |        |                  |                     |                    |                                                              |      |
150| Pass count                                              |                    | 5           |                     |          |        |                  |                     |                    |                                                              |      |
151| Fail count                                              |                    | 0              |                     |          |        |                  |                     |                    |                                                              |      |
152| ark今日劣化数量                                         |                    | 2              |                     |          |        |                  |                     |                    |                                                              |      |
153| Total excute time is(s)                                 |                    | 0:0:19.699970 |                     |          |        |                  |                     |                    |                                                              |      |
154| ark/v 8 劣化数量                                    |  | 2             |                     |          |        |                  |                     |                    |                                                              |      |
155| ark/v 8 jitless 劣化数量                             |                    | 0           |                     |          |        |                  |                     |                    |                                                              |      |
156
157说明:
158
159- E列“昨日用例执行耗时(ns)”默认是隐藏的。
160- G列 “v 8(ms)”是有基准数据每月1、11、21日会生成v 8执行时间的基准数据,其他时间都不进行v 8执行用例操作,直接获取前边最近的基准数据
161- H列 “v 8 --jitless(ms)”是有基准数据每月1、11、21日会生成v 8 --jitless执行时间的基准数据,其他时间都不进行v 8 --jitless执行用例操作,直接获取前边最近的v 8 --jitless基准数据
162