From aa7a14ae55435bc03644fa94b11127359b5ecfa1 Mon Sep 17 00:00:00 2001 From: caolili123 Date: Fri, 24 Jan 2025 15:14:36 +0800 Subject: [PATCH] add toString Signed-off-by: caolili123 --- arkts/ts/collections.ts | 283 +++++++++++++++++++++++++++++++++++----- run_sendable.py | 20 ++- 2 files changed, 262 insertions(+), 41 deletions(-) diff --git a/arkts/ts/collections.ts b/arkts/ts/collections.ts index 26739eb..a35d609 100644 --- a/arkts/ts/collections.ts +++ b/arkts/ts/collections.ts @@ -253,7 +253,7 @@ function from() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); SendableArray.from(mySendableArray); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -267,7 +267,7 @@ function fromInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); SendableInt8Array.from(mySendableInt8Array, z => z - 1); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -281,7 +281,7 @@ function forEach() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.forEach(num => num -1); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -295,7 +295,7 @@ function forEachInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.forEach(num => num -1); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -309,7 +309,7 @@ function pop() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.pop(); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -323,7 +323,7 @@ function join() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.join('/'); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -337,7 +337,7 @@ function joinInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.join('/'); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -351,7 +351,7 @@ function shift() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.shift(); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -365,7 +365,7 @@ function unshift() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.unshift(0); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -379,7 +379,7 @@ function slice() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.slice(0, number); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -393,7 +393,7 @@ function sliceInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.slice(0, number); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -407,7 +407,7 @@ function sort() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.sort((a, b) => a - b); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -421,7 +421,7 @@ function sortInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.sort((a, b) => a - b); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -435,7 +435,7 @@ function indexOf() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.indexOf(number); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -449,7 +449,7 @@ function indexOfInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.indexOf(number); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -463,7 +463,7 @@ function map() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.map((num) => num * 2); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -477,7 +477,7 @@ function mapInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.map((num) => num * 2); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -512,18 +512,32 @@ function reduceInt8Array() print("collections reduce--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); } -function reverseInt8Array() +function reduceRight() { let start = ArkTools.timeInUs(); - myInt8Array.reverse(); + myArray.reduceRight((acc, num) => (acc > num? acc : num)); let end = ArkTools.timeInUs(); let time = (end - start) / 1000; let start1 = ArkTools.timeInUs(); - mySendableInt8Array.reverse(); + mySendableArray.reduceRight((acc, num) => (acc > num? acc : num)); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; - print("collections reverse--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); + print("collections reduceRight--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function reduceRightInt8Array() +{ + let start = ArkTools.timeInUs(); + myInt8Array.reduceRight((acc, num) => (acc > num? acc : num)); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableInt8Array.reduceRight((acc, num) => (acc > num? acc : num)); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections reduceRight--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); } function includes() @@ -533,7 +547,7 @@ function includes() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.includes(number, 0); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -547,7 +561,7 @@ function includesInt8Array() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableInt8Array.includes(number, 0); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -561,7 +575,7 @@ function splice() let end = ArkTools.timeInUs(); let time = (end - start) / 1000; - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.splice(0, number/2); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; @@ -581,17 +595,206 @@ function concat() for(let i = 0; i < number; i++) { sendableArray1.push(1); } - let start1 = ArkTools.timeInUs();0 + let start1 = ArkTools.timeInUs(); mySendableArray.concat(sendableArray1); let end1 = ArkTools.timeInUs(); let time1 = (end1 - start1) / 1000; print("collections concat--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); } +function keys() +{ + let start = ArkTools.timeInUs(); + myArray.keys(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableArray.keys(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections keys--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function keysInt8Array() +{ + let start = ArkTools.timeInUs(); + myInt8Array.keys(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableInt8Array.keys(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections keys--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + +function entries() +{ + let start = ArkTools.timeInUs(); + myArray.entries(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableArray.entries(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections entries--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function entriesInt8Array() +{ + let start = ArkTools.timeInUs(); + myInt8Array.entries(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableInt8Array.entries(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections entries--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + +function values() +{ + let start = ArkTools.timeInUs(); + myArray.values(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableArray.values(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections values--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function valuesInt8Array() +{ + let start = ArkTools.timeInUs(); + myInt8Array.values(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableInt8Array.values(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections values--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + +function reverse() +{ + let start = ArkTools.timeInUs(); + myArray.reverse(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableArray.reverse(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections reverse--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function reverseInt8Array() +{ + let start = ArkTools.timeInUs(); + myInt8Array.reverse(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let start1 = ArkTools.timeInUs(); + mySendableInt8Array.reverse(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections reverse--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + +function toString() +{ + let array1 : Array = new Array(number); + array1.fill(1); + let start = ArkTools.timeInUs(); + array1.toString(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let sendableArray1 : SendableArray = new SendableArray(); + for(let i = 0; i < number; i++) { + sendableArray1.push(1); + } + let start1 = ArkTools.timeInUs(); + sendableArray1.toString(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections toString--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function toStringInt8Array() +{ + let array1 : Int8Array = new Int8Array(number); + array1.fill(1); + let start = ArkTools.timeInUs(); + array1.toString(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let sendableArray1: SendableInt8Array = new SendableInt8Array(number); + sendableArray1.fill(1); + let start1 = ArkTools.timeInUs(); + sendableArray1.toString(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections toString--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + +function toLocaleString() +{ + let array1 : Array = new Array(number); + array1.fill(1000); + let start = ArkTools.timeInUs(); + array1.toLocaleString(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let sendableArray1 : SendableArray = new SendableArray(); + for(let i = 0; i < number; i++) { + sendableArray1.push(1000); + } + let start1 = ArkTools.timeInUs(); + sendableArray1.toLocaleString(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections toLocaleString--normal array: "+String(time)+" ms, "+"sendable array: "+String(time1)+" ms"); +} + +function toLocaleStringInt8Array() +{ + let array1 : Int8Array = new Int8Array(number); + array1.fill(1000); + let start = ArkTools.timeInUs(); + array1.toLocaleString(); + let end = ArkTools.timeInUs(); + let time = (end - start) / 1000; + + let sendableArray1: SendableInt8Array = new SendableInt8Array(number); + sendableArray1.fill(1000); + let start1 = ArkTools.timeInUs(); + sendableArray1.toLocaleString(); + let end1 = ArkTools.timeInUs(); + let time1 = (end1 - start1) / 1000; + print("collections toLocaleString--normal Int8Array: "+String(time)+" ms, "+"sendable Int8Array: "+String(time1)+" ms"); +} + // Array myArray = []; -push() -fill() +push(); +fill(); +reverse(); filter(); find(); findIndex(); @@ -606,16 +809,23 @@ sort(); indexOf(); map(); reduce(); +reduceRight(); includes(); -some() -every() -copyWithin() -of() +some(); +every(); +copyWithin(); +of(); +keys(); +values(); +entries(); +toString(); +toLocaleString(); splice(); concat(); // Int8Array -fillInt8Array() +fillInt8Array(); +reverseInt8Array(); fromInt8Array(); copyWithinInt8Array(); everyInt8Array(); @@ -627,7 +837,12 @@ indexOfInt8Array(); joinInt8Array(); mapInt8Array(); reduceInt8Array(); -reverseInt8Array(); +reduceRightInt8Array(); sliceInt8Array(); sortInt8Array(); -includesInt8Array(); \ No newline at end of file +includesInt8Array(); +keysInt8Array(); +valuesInt8Array(); +entriesInt8Array(); +toStringInt8Array(); +toLocaleStringInt8Array(); \ No newline at end of file diff --git a/run_sendable.py b/run_sendable.py index dd1d9a9..8e9a8f5 100644 --- a/run_sendable.py +++ b/run_sendable.py @@ -52,22 +52,23 @@ def prepare_standalon_code(): if not os.path.exists(data_dir): os.makedirs(data_dir) os.chdir(data_dir) - if not os.path.isdir(os.path.join(data_dir, '.git')): + if not os.path.isdir(os.path.join(data_dir, '.repo')): commands = [ "repo init -u https://gitee.com/ark-standalone-build/manifest.git -b master", "repo sync -c -j8", "repo forall -c 'git lfs pull'", - "./prebuilts_download.sh", - "python ark.py x64.release es2panda ark_js_vm" + "./prebuilts_download.sh" ] for command in commands: try: subprocess.run(command, shell=True, check=True) except subprocess.CalledProcessError as e: print(f"Command {command} failed with error: {e}") - else: - git_clean(data_dir) - git_pull(data_dir) + command = ["python ark.py x64.release es2panda ark_js_vm"] + try: + subprocess.run(command, shell=True, check=True) + except subprocess.CalledProcessError as e: + print(f"Command {command} failed with error: {e}") def ts2abc(case_name=None,file_path=None): if not os.path.exists(abc_path): @@ -122,6 +123,9 @@ def is_excel_file_exists(file_path): except FileNotFoundError: return False +def os_path_convert(path): + return os.path.abspath(os.path.expanduser(path)) + def process_sheet(line, sheet, header, data_keywords): parts = line.split("--") sub_parts = parts[1].split(",") @@ -162,7 +166,7 @@ def run_array(case_name=None): int8array_sheet.append(["Case", "Int8Array", "SendableInt8Array", "SendableInt8Array/Int8Array"]) int8array_sheet.delete_rows(2, int8array_sheet.max_row) - cmd = f"cd {standalone_path} && {ark_js_vm} --entry-point={case_name} --aot-file=./{case_name} {abc_path}/{case_name}.abc" + cmd = f"cd {standalone_path} && {ark_js_vm} --icu-data-path={icu_data_path} --entry-point={case_name} --aot-file=./{case_name} {abc_path}/{case_name}.abc" result = runCmd(cmd) if "error" in result or "Signal" in result or "TypeError" in result or "RangeError" in result: print(f"result error: {result}") @@ -189,6 +193,7 @@ def main(): global out_path global current_dir global abc_path + global icu_data_path current_dir = os.getcwd() standalone_path = f"{current_dir}/standalone" @@ -199,6 +204,7 @@ def main(): out_path = f"{current_dir}/arkts/out" log_file = f'arkts_build_{date_strftime}.log' abc_path=f"{current_dir}/arkts/abc/{date_strftime}" + icu_data_path=os_path_convert(f"{standalone_path}/third_party/icu/ohos_icu4j/data") prepare_standalon_code() case_name_ts = None for root, dirs, files in os.walk(ts_path): -- Gitee