From 6331a29a82acd52c7a4b1211953515fe9cbcffe1 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Tue, 28 Jan 2025 13:41:25 +0300 Subject: [PATCH] test ArrayProxy performance Signed-off-by: Sergey Malenkov --- incremental/compat/src/arkts/observable.ts | 2 +- incremental/demo-playground/src/main.ts | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/incremental/compat/src/arkts/observable.ts b/incremental/compat/src/arkts/observable.ts index 43ad4ae28..1abea6ae3 100644 --- a/incremental/compat/src/arkts/observable.ts +++ b/incremental/compat/src/arkts/observable.ts @@ -181,7 +181,7 @@ export function observableProxyArray(...value: Value[]): Array { return observableProxy(Array.of(...value)) } -const PROXY_DISABLED = true // because of ArkTS Reflection performance +const PROXY_DISABLED = false // because of ArkTS Reflection performance /** @internal */ export function observableProxy(value: Value, parent?: ObservableHandler, observed?: boolean, strict: boolean = true): Value { diff --git a/incremental/demo-playground/src/main.ts b/incremental/demo-playground/src/main.ts index a4ff32a38..b5c185124 100644 --- a/incremental/demo-playground/src/main.ts +++ b/incremental/demo-playground/src/main.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { uint32 } from "@koalaui/common" +import { observableProxyArray, uint32 } from "@koalaui/common" import { CONTEXT_ROOT_SCOPE, IncrementalNode, NodeAttach, ReadonlyTreeNode, contextLocalValue, memoRoot, mutableState, updateStateManager, } from "@koalaui/runtime" @@ -72,4 +72,21 @@ state.value = 19 updateStateManager() // Compute the next frame. console.log(root.value.toHierarchy()) -console.log("-----END-----") \ No newline at end of file +console.log("-----END-----") + +function performance(count: number, proxy: boolean) { + const s = mutableState>( + proxy + ? observableProxyArray() + : new Array() + ) + const t1 = Date.now() + for (let i = 0; i < count; i++) { + s.value.push(count) + s.value.pop() + } + const t2 = Date.now() + console.log("count:", count, " proxy:", proxy, " time:", t2 - t1) +} +performance(1000000, false) +performance(1000, true) -- Gitee