From eb1dd04f9ef0e48ce41a249fd1dfd75e557fefbd Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Tue, 18 Feb 2025 19:17:15 +0300 Subject: [PATCH 1/5] Perf measurement harness Signed-off-by: Nikolay Igotti --- arkoala-arkts/arkui/src/ArkComponentRoot.ts | 2 -- arkoala-arkts/arkui/src/ArkStructBase.ts | 3 --- .../user/src/ets/pages/homePage/main.ets | 23 +++++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/arkoala-arkts/arkui/src/ArkComponentRoot.ts b/arkoala-arkts/arkui/src/ArkComponentRoot.ts index 3af4b9281..27ddb6c47 100644 --- a/arkoala-arkts/arkui/src/ArkComponentRoot.ts +++ b/arkoala-arkts/arkui/src/ArkComponentRoot.ts @@ -43,12 +43,10 @@ export function ArkComponentRoot( }) } ) - console.log("Going to attach") NodeAttach( () => ArkComponentRootPeer.create(), (node: PeerNode) => { content() - console.log("TODO: ArkComponentRoot routing") // const state = CurrentRouterTransitionState() // if (state) { // RunEffect(state.visibility, visibility => { diff --git a/arkoala-arkts/arkui/src/ArkStructBase.ts b/arkoala-arkts/arkui/src/ArkStructBase.ts index 5c40d5e86..ce99fe7ee 100644 --- a/arkoala-arkts/arkui/src/ArkStructBase.ts +++ b/arkoala-arkts/arkui/src/ArkStructBase.ts @@ -18,7 +18,6 @@ export abstract class ArkStructBase extends ArkCustomComponentImpl arg1?: () => void, arg2?: T_Options ): void { - console.log("_instantiate()") const receiver = remember(() => { const instance = factory(); instance.__initializeStruct(arg1, arg2); @@ -43,8 +42,6 @@ export abstract class ArkStructBase extends ArkCustomComponentImpl content?: () => void, initializers?: T_Options ): void { - console.log("_buildWrapper()") - ArkComponentRoot(this, () => { this.__updateStruct(initializers) this.__build(attributes, content, initializers) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets index 4ddc9ed53..cf2eeaf05 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets @@ -31,8 +31,31 @@ export struct MainPage { @Prop num: number @Prop ratio: number @Consume('pathInfos') pathInfos: NavPathStack + + isPerf: boolean = true + build() { + if (this.isPerf) { + const count = 100 + let perfData = new Array(count) + for (let i = 0; i < count; i++) perfData[i] = i + let now = Date.now() + console.log(`Measuring...`) + ForEach(perfData, (item: number, index: number) => { + this.buildReal() + }, (item: number, index: number) => String(item)) + let passed = Date.now() - now + console.log(`Passed ${passed}ms, ${passed / count}ms per iteration`) + } else { + this.buildReal() + } + } + + @Builder + buildReal() { + console.log(`buildReal`) Column() { + console.log(`Column`) Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { Column() { Image('/resources/icon/scan.png') -- Gitee From 7ef4993ed426c45c82ac870177402cf328eb426b Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Tue, 18 Feb 2025 19:22:54 +0300 Subject: [PATCH 2/5] Temp Signed-off-by: Nikolay Igotti --- arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets | 2 -- 1 file changed, 2 deletions(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets index cf2eeaf05..3b8087d41 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets @@ -53,9 +53,7 @@ export struct MainPage { @Builder buildReal() { - console.log(`buildReal`) Column() { - console.log(`Column`) Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { Column() { Image('/resources/icon/scan.png') -- Gitee From 8f38ce297c9370ccd42ac16281c53a190f65005b Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Wed, 19 Feb 2025 12:08:57 +0300 Subject: [PATCH 3/5] Update Signed-off-by: Nikolay Igotti --- arkoala-arkts/package.json | 5 +++-- incremental/tools/fast-arktsc/src/main.ts | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arkoala-arkts/package.json b/arkoala-arkts/package.json index ee2066012..e4326d2b9 100644 --- a/arkoala-arkts/package.json +++ b/arkoala-arkts/package.json @@ -65,13 +65,14 @@ "build:arkoala": "npm run panda:sdk:check-install && npm run build:arkoala:components && npm run link:arkoala", "build:arkoala:inc": "npm run build:arkoala:components:inc && npm run link:arkoala", "link:arkoala": "mkdir -p build && ../incremental/tools/panda/arkts/arklink --output build/arkoala.abc -- ./arkui/build/arkui-no-common.abc ../arkoala/arkui-common/build/arkui-common.abc ../incremental/runtime/build/incremental.abc ../interop/build/interop.abc", - "aot:host:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc", + "aot:host:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:stdlib && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-libs ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc", "aot:arm32:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-target arm", "aot:arm64:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-target arm64", "build:user": "npm run build:user --prefix trivial/user && mkdir -p ./build && cp -r trivial/user/build/user.abc ./build/", "build:navigation": "npm run build:user --prefix navigation/user && mkdir -p ./build && cp -r navigation/user/build/user.abc ./build/navigation.abc", "build:shopping": "npm run build:user --prefix shopping/user && mkdir -p ./build && cp -r shopping/user/build/user.abc ./build/shopping.abc", - "aot:host:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc", + "aot:host:stdlib": "node ../incremental/tools/fast-arktsc --only-aot ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc", + "aot:host:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc,./build/arkoala.abc", "aot:arm32:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc --aot-target arm", "aot:arm64:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc --aot-target arm64", "run:node:user": "ACE_LIBRARY_PATH=build PANDA_HOME=../incremental/tools/panda/node_modules/@panda/sdk node build/index.js panda:ComExampleTrivialApplication", diff --git a/incremental/tools/fast-arktsc/src/main.ts b/incremental/tools/fast-arktsc/src/main.ts index 2e8bc7cf3..6b64177b9 100644 --- a/incremental/tools/fast-arktsc/src/main.ts +++ b/incremental/tools/fast-arktsc/src/main.ts @@ -177,7 +177,7 @@ function mainAot(abc: string) { let sdk = options.sdk ?? path.resolve(path.join(__dirname, '..', '..', 'panda', 'node_modules', '@panda', 'sdk')) let aot = path.join(sdk, archDir(), 'bin', 'ark_aot') let stdlib = path.resolve(path.join(sdk, "ets", "etsstdlib.abc")) - const aotLibs = [stdlib] + const aotLibs = abc.indexOf("etsstdlib") == -1 ? [stdlib] : [] if (options.aotLibs) aotLibs.push(... options.aotLibs.split(",")) let args: string[] = [] if (process.platform == "darwin") { @@ -185,15 +185,16 @@ function mainAot(abc: string) { args.push(aot) aot = "echo" } - let result = abc.replace('.abc', '.an') + let dir = options.outputDir ?? path.dirname(abc) + let result = path.join(dir, path.basename(abc).replace('.abc', '.an')) args.push(... options.aotTarget ? [`--compiler-cross-arch=${options.aotTarget}`] : []) args.push(... [ `--load-runtimes=ets`, - `--boot-panda-files=${aotLibs.join(':')}:${abc}`, + `--boot-panda-files=${aotLibs.concat(abc).join(':')}`, `--paoc-panda-files=${abc}`, `--paoc-output=${result}` ]) - console.log(`AOT compile ${abc}...`) + console.log(`AOT compile ${abc} to ${result}...`) const child = child_process.spawn(aot, args) child.stdout.on('data', (data) => { process.stdout.write(data); -- Gitee From 9e727124cdfc55814edb4550ef96f406c62142f3 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Wed, 19 Feb 2025 12:26:51 +0300 Subject: [PATCH 4/5] Fix build Signed-off-by: Nikolay Igotti --- arkoala-arkts/package.json | 4 ++-- incremental/tools/fast-arktsc/src/main.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arkoala-arkts/package.json b/arkoala-arkts/package.json index e4326d2b9..bcae4f45d 100644 --- a/arkoala-arkts/package.json +++ b/arkoala-arkts/package.json @@ -65,14 +65,14 @@ "build:arkoala": "npm run panda:sdk:check-install && npm run build:arkoala:components && npm run link:arkoala", "build:arkoala:inc": "npm run build:arkoala:components:inc && npm run link:arkoala", "link:arkoala": "mkdir -p build && ../incremental/tools/panda/arkts/arklink --output build/arkoala.abc -- ./arkui/build/arkui-no-common.abc ../arkoala/arkui-common/build/arkui-common.abc ../incremental/runtime/build/incremental.abc ../interop/build/interop.abc", - "aot:host:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:stdlib && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-libs ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc", + "aot:host:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:stdlib && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc", "aot:arm32:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-target arm", "aot:arm64:arkoala": "npm run link:arkoala && npm run -C ../incremental/tools/fast-arktsc compile && node ../incremental/tools/fast-arktsc --only-aot build/arkoala.abc --aot-target arm64", "build:user": "npm run build:user --prefix trivial/user && mkdir -p ./build && cp -r trivial/user/build/user.abc ./build/", "build:navigation": "npm run build:user --prefix navigation/user && mkdir -p ./build && cp -r navigation/user/build/user.abc ./build/navigation.abc", "build:shopping": "npm run build:user --prefix shopping/user && mkdir -p ./build && cp -r shopping/user/build/user.abc ./build/shopping.abc", "aot:host:stdlib": "node ../incremental/tools/fast-arktsc --only-aot ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc", - "aot:host:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc,./build/arkoala.abc", + "aot:host:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc", "aot:arm32:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc --aot-target arm", "aot:arm64:shopping": "npm run build:shopping && npm run -C ../incremental/tools/fast-arktsc compile && npm run aot:host:arkoala && node ../incremental/tools/fast-arktsc --only-aot build/shopping.abc --aot-libs ./build/arkoala.abc --aot-target arm64", "run:node:user": "ACE_LIBRARY_PATH=build PANDA_HOME=../incremental/tools/panda/node_modules/@panda/sdk node build/index.js panda:ComExampleTrivialApplication", diff --git a/incremental/tools/fast-arktsc/src/main.ts b/incremental/tools/fast-arktsc/src/main.ts index 6b64177b9..b9b066a0b 100644 --- a/incremental/tools/fast-arktsc/src/main.ts +++ b/incremental/tools/fast-arktsc/src/main.ts @@ -190,7 +190,7 @@ function mainAot(abc: string) { args.push(... options.aotTarget ? [`--compiler-cross-arch=${options.aotTarget}`] : []) args.push(... [ `--load-runtimes=ets`, - `--boot-panda-files=${aotLibs.concat(abc).join(':')}`, + `--boot-panda-files=${aotLibs.map(it => path.resolve(it)).concat(abc).join(':')}`, `--paoc-panda-files=${abc}`, `--paoc-output=${result}` ]) -- Gitee From bbebb2ec1127d7cc9327cefafc58b270233f74d8 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Wed, 19 Feb 2025 12:54:47 +0300 Subject: [PATCH 5/5] Disable perf by default Signed-off-by: Nikolay Igotti --- arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets index 3b8087d41..a57b795dd 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets @@ -32,7 +32,7 @@ export struct MainPage { @Prop ratio: number @Consume('pathInfos') pathInfos: NavPathStack - isPerf: boolean = true + isPerf: boolean = false build() { if (this.isPerf) { -- Gitee