From 7ca42c0eed67a4ba19e672a89bc01a20166de373 Mon Sep 17 00:00:00 2001 From: caolili123 Date: Wed, 19 Feb 2025 16:18:17 +0800 Subject: [PATCH] add py for win Signed-off-by: caolili123 --- arkts/ts/collections.ts | 521 ++++++++++++++++++++-------------------- run_sendable_win.py | 231 ++++++++++++++++++ 2 files changed, 489 insertions(+), 263 deletions(-) create mode 100644 run_sendable_win.py diff --git a/arkts/ts/collections.ts b/arkts/ts/collections.ts index 46422f8..a7441c9 100644 --- a/arkts/ts/collections.ts +++ b/arkts/ts/collections.ts @@ -23,10 +23,6 @@ // @ts-nocheck // declare function print(str: any): string; -declare interface ArkTools{ - timeInUs(arg:any):number -} - const number = 100000; let myArray : Array = new Array(); let mySendableArray : SendableArray = new SendableArray(); @@ -76,37 +72,36 @@ function getTypeName(object: any): string } else if (object instanceof Set) { return "Set"; } - // 可以添加更灵活的错误处理,比如记录日志 - console.warn(`Unsupported array type: ${array.constructor.name}`); + return "Unknown"; } function some() { const condition = (element) => element < 0; - let start = ArkTools.timeInUs(); + let start = Date.now(); myArray.some(condition); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); mySendableArray.some(condition); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections some--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } function everyArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < number; i++) myArray.every((elem) => elem > 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < number; i++) mySendableArray.every((elem) => elem > 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections every--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -119,29 +114,29 @@ function every(array: any, sendableArray: any) { function everyTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.every((elem) => elem > 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.every((elem) => elem > 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections every--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function copyWithinArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 100; i++) myArray.copyWithin(0,3); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 100; i++) mySendableArray.copyWithin(0,3); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections copyWithin--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -154,70 +149,70 @@ function copyWithin(array: any, sendableArray: any) { function copyWithinTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.copyWithin(0, 1, number-1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.copyWithin(0, 1, number-1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections copyWithin--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function of() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 1000; i++) Array.of(myArray); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 1000; i++) Array.of(mySendableArray); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections of--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } function push() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < number; i++) myArray.push(i); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < number; i++) mySendableArray.push(i); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections push--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } function fillArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10; i++) myArray.fill(127); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10; i++) mySendableArray.fill(127); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections fill--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } function fillTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); - array.fill(123); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let start = Date.now(); + for (let i = 0; i < 200; i++) array.fill(123); + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); - sendableArray.fill(123); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let start1 = Date.now(); + for (let i = 0; i < 200; i++) sendableArray.fill(123); + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections fill--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -229,15 +224,15 @@ function fill(array: any, sendableArray: any) { } function filterTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.filter((elem) => elem > 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.filter((elem) => elem > 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections filter--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -250,15 +245,15 @@ function filter(array: any, sendableArray: any) { function findTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.find((elem) => elem === 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.find((elem) => elem === 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections find--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -271,15 +266,15 @@ function find(array: any, sendableArray: any) { function findIndexTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.findIndex((elem) => elem === 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.findIndex((elem) => elem === 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections findIndex--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -292,15 +287,15 @@ function findIndex(array: any, sendableArray: any) { function fromArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); Array.from(myArray); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); SendableArray.from(mySendableArray); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections from--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -313,15 +308,15 @@ function from(array: any, sendableArray: any) function fromTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); Int8Array.from(array, z => z - 1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); SendableInt8Array.from(sendableArray, z => z - 1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections from--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -334,29 +329,29 @@ function forEach(array: any, sendableArray: any) function forEachTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.forEach(num => num -1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.forEach(num => num -1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections forEach--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function pop() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < number; i++) myArray.pop(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < number; i++) mySendableArray.pop(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections pop--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -369,43 +364,43 @@ function join(array: any, sendableArray: any) { function joinTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.join('/'); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.join('/'); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections join--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function shift() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 20; i++) myArray.shift(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 20; i++) mySendableArray.shift(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections shift--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } function unshift() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 20; i++) myArray.unshift(0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 20; i++) mySendableArray.unshift(0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections unshift--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -418,15 +413,15 @@ function slice(array: any, sendableArray: any) { function sliceTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 20; i++) array.slice(0, number); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 20; i++) sendableArray.slice(0, number); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections slice--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -439,29 +434,29 @@ function sort(array: any, sendableArray: any) { function sortTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.sort((a, b) => a - b); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.sort((a, b) => a - b); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections sort--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function indexOfArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10; i++) myArray.indexOf(number); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10; i++) mySendableArray.indexOf(number); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections indexOf--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -474,15 +469,15 @@ function indexOf(array: any, sendableArray: any) { function indexOfTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.indexOf(number); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.indexOf(number); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections indexOf--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -495,15 +490,15 @@ function map(array: any, sendableArray: any) { function mapOfTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.map((num) => num * 2); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.map((num) => num * 2); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections map--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -516,15 +511,15 @@ function reduce(array: any, sendableArray: any) { function reduceTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.reduce((acc, num) => (acc > num? acc : num)); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.reduce((acc, num) => (acc > num? acc : num)); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections reduce--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -537,29 +532,29 @@ function reduceRight(array: any, sendableArray: any) { function reduceRightTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.reduceRight((acc, num) => (acc > num? acc : num)); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.reduceRight((acc, num) => (acc > num? acc : num)); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections reduceRight--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function includesArray() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10; i++) myArray.includes(number, 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10; i++) mySendableArray.includes(number, 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections includes--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -572,29 +567,29 @@ function includes(array: any, sendableArray: any) { function includesTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.includes(number, 0); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.includes(number, 0); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections includes--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function splice() { - let start = ArkTools.timeInUs(); + let start = Date.now(); myArray.splice(0, number/2); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); mySendableArray.splice(0, number/2); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections splice--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -602,19 +597,19 @@ function concat() { let Array1 : Array = new Array(number); Array1.fill(1); - let start = ArkTools.timeInUs(); + let start = Date.now(); myArray.concat(Array1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; let sendableArray1 : SendableArray = new SendableArray(); for(let i = 0; i < number; i++) { sendableArray1.push(1); } - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); mySendableArray.concat(sendableArray1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections concat--normal Array: "+String(time)+" ms, "+"sendable Array: "+String(time1)+" ms"); } @@ -627,15 +622,15 @@ function keys(array: any, sendableArray: any) { function keysTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.keys(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.keys(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections keys--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -648,15 +643,15 @@ function entries(array: any, sendableArray: any) { function entriesTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.entries(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.entries(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections entries--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -669,15 +664,15 @@ function values(array: any, sendableArray: any) { function valuesTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.values(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.values(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections values--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -690,15 +685,15 @@ function reverse(array: any, sendableArray: any) { function reverseTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); - array.reverse(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; - - let start1 = ArkTools.timeInUs(); - sendableArray.reverse(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let start = Date.now(); + for (let i = 0; i < 10; i++) array.reverse(); + let end = Date.now(); + let time = end - start; + + let start1 = Date.now(); + for (let i = 0; i < 10; i++) sendableArray.reverse(); + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections reverse--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -711,15 +706,15 @@ function toString(array: any, sendableArray: any) { function toStringTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.toString(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.toString(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections toString--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -732,33 +727,33 @@ function toLocaleString(array: any, sendableArray: any) { function toLocaleStringTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); array.toLocaleString(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); sendableArray.toLocaleString(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections toLocaleString--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function setMap() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for(let i = 0; i < number; i++) { myMap.set(i, i); } - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for(let i = 0; i < number; i++) { mySendableMap.set(i, i); } - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections set--normal Map: "+String(time)+" ms, "+"sendable Map: "+String(time1)+" ms"); } @@ -771,29 +766,29 @@ function has(array: any, sendableArray: any) function hasTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.has(number-1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.has(number-1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections has--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function getMap() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) myMap.get(number-1); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) mySendableMap.get(number-1); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections get--normal Map: "+String(time)+" ms, "+"sendable Map: "+String(time1)+" ms"); } @@ -806,15 +801,15 @@ function deleteT(array: any, sendableArray: any) function deleteTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.delete(i); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.delete(i); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections delete--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } @@ -827,33 +822,33 @@ function clear(array: any, sendableArray: any) function clearTypeArray(array: any, sendableArray: any, typeArrayName: string) { - let start = ArkTools.timeInUs(); + let start = Date.now(); for (let i = 0; i < 10000; i++) array.clear(); - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for (let i = 0; i < 10000; i++) sendableArray.clear(); - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print(`collections clear--normal ${typeArrayName}: ${time} ms, sendable ${typeArrayName}: ${time1} ms`); } function addSet() { - let start = ArkTools.timeInUs(); + let start = Date.now(); for(let i = 0; i < number; i++) { mySet.add(i); } - let end = ArkTools.timeInUs(); - let time = (end - start) / 1000; + let end = Date.now(); + let time = end - start; - let start1 = ArkTools.timeInUs(); + let start1 = Date.now(); for(let i = 0; i < number; i++) { mySendableSet.add(i); } - let end1 = ArkTools.timeInUs(); - let time1 = (end1 - start1) / 1000; + let end1 = Date.now(); + let time1 = end1 - start1; print("collections add--normal Set: "+String(time)+" ms, "+"sendable Set: "+String(time1)+" ms"); } diff --git a/run_sendable_win.py b/run_sendable_win.py new file mode 100644 index 0000000..986fe73 --- /dev/null +++ b/run_sendable_win.py @@ -0,0 +1,231 @@ +import subprocess +import os +from datetime import datetime +from openpyxl import load_workbook,Workbook + +def send_files_to_device(): + for file in files: + if os.path.exists(file): + try: + # 使用 hdc shell 命令将文件推送到设备 + command = f'hdc file send {file} {device_dir}' + subprocess.run(command, shell=True, check=True) + print(f"成功将 {file} 发送到设备的 {device_dir} 目录") + except subprocess.CalledProcessError as e: + print(f"发送 {file} 到设备时出错: {e}") + else: + print(f"{file} 文件不存在,请检查。") + +def set_executable_permission(): + for file in files: + try: + # 使用 hdc shell 命令设置文件的可执行权限 + command = f'hdc shell chmod +x {device_dir}/{file}' + subprocess.run(command, shell=True, check=True) + print(f"成功为 {device_dir}/{file} 设置可执行权限") + except subprocess.CalledProcessError as e: + print(f"为 {device_dir}/{file} 设置可执行权限时出错: {e}") + +def execute_command_on_device(): + # 要执行的命令 + command_to_execute = f'hdc shell "cd {device_dir} && ./ark_js_vm collections.abc > {device_log_file}"' + try: + # 执行命令并将结果输出到 result.log 文件 + subprocess.run(command_to_execute, shell=True, check=True) + print(f"成功在设备上执行命令并将结果保存到 {device_log_file}") + except subprocess.CalledProcessError as e: + print(f"在设备上执行命令时出错: {e}") + +def pull_log_file(): + try: + # 使用 hdc shell 命令将日志文件从设备拉取到本地 + command = f'hdc file recv {device_log_file} {local_log_file}' + subprocess.run(command, shell=True, check=True) + print(f"成功将 {device_log_file} 回传到本地的 {local_log_file}") + except subprocess.CalledProcessError as e: + print(f"回传 {device_log_file} 到本地时出错: {e}") + +def is_excel_file_exists(file_path): + try: + workbook = load_workbook(filename=file_path) + return True + except FileNotFoundError: + return False + +def process_sheet(line, sheet, header, data_keywords): + parts = line.split("--") + sub_parts = parts[1].split(",") + values = [None] * len(data_keywords) + case = None + for sub_part in sub_parts: + for i, (keyword, value_type) in enumerate(data_keywords): + if keyword in sub_part: + value_str = sub_part.split(":")[1].strip() + values[i] = value_type(value_str.replace(" ms", "")) + case = parts[0].split(" ")[1].strip() + ratios = [] + for i in range(0, len(values), 2): + try: + if values[i] and values[i + 1]: + ratio = round(float(values[i + 1]) / float(values[i]), 3) + else: + ratio = 0 + except ZeroDivisionError: + ratio = 0 + ratios.append(ratio) + sheet.append([case] + values + ratios) + +def is_word_boundary(char): + return not char.isalnum() +def whole_word_match(line, target_word): + length = len(target_word) + index = 0 + while index < len(line): + found_index = line.find(target_word, index) + if found_index == -1: + break + start_boundary = found_index == 0 or is_word_boundary(line[found_index - 1]) + end_boundary = found_index + length == len(line) or is_word_boundary(line[found_index + length]) + if start_boundary and end_boundary: + return True + index = found_index + 1 + return False + +def parse_log(): + if not is_excel_file_exists(excel_file): + workbook = Workbook() + array_sheet = workbook.active + array_sheet.title = "Array" + array_sheet.append(["Case", "Array", "SendableArray", "SendableArray/Array"]) + workbook.save(excel_file) + workbook = load_workbook(excel_file) + + array_sheet = workbook["Array"] + array_sheet.delete_rows(2, array_sheet.max_row) + # 新增 Int8Array sheet 相关逻辑 + int8array_sheet = workbook.create_sheet("Int8Array") if "Int8Array" not in workbook.sheetnames else workbook["Int8Array"] + int8array_sheet.append(["Case", "Int8Array", "SendableInt8Array", "SendableInt8Array/Int8Array"]) + int8array_sheet.delete_rows(2, int8array_sheet.max_row) + + # 新增 Uint8ClampedArray sheet 相关逻辑 + uint8ClampedArray_sheet = workbook.create_sheet("Uint8ClampedArray") if "Uint8ClampedArray" not in workbook.sheetnames else workbook["Uint8ClampedArray"] + uint8ClampedArray_sheet.append(["Case", "Uint8ClampedArray", "SendableUint8ClampedArray", "SendableUint8ClampedArray/Uint8ClampedArray"]) + uint8ClampedArray_sheet.delete_rows(2, uint8ClampedArray_sheet.max_row) + + # 新增 Uint8Array sheet 相关逻辑 + uint8Array_sheet = workbook.create_sheet("Uint8Array") if "Uint8Array" not in workbook.sheetnames else workbook["Uint8Array"] + uint8Array_sheet.append(["Case", "Uint8Array", "SendableUint8Array", "SendableUint8Array/Uint8Array"]) + uint8Array_sheet.delete_rows(2, uint8Array_sheet.max_row) + + # 新增 Int16Array sheet 相关逻辑 + int16Array_sheet = workbook.create_sheet("Int16Array") if "Int16Array" not in workbook.sheetnames else workbook["Int16Array"] + int16Array_sheet.append(["Case", "Int16Array", "SendableInt16Array", "SendableInt16Array/Int16Array"]) + int16Array_sheet.delete_rows(2, int16Array_sheet.max_row) + + # 新增 Uint16Array sheet 相关逻辑 + uint16Array_sheet = workbook.create_sheet("Uint16Array") if "Uint16Array" not in workbook.sheetnames else workbook["Uint16Array"] + uint16Array_sheet.append(["Case", "Uint16Array", "SendableUint16Array", "SendableUint16Array/Uint16Array"]) + uint16Array_sheet.delete_rows(2, uint16Array_sheet.max_row) + + # 新增 Int32Array sheet 相关逻辑 + int32Array_sheet = workbook.create_sheet("Int32Array") if "Int32Array" not in workbook.sheetnames else workbook["Int32Array"] + int32Array_sheet.append(["Case", "Int32Array", "SendableInt32Array", "SendableInt32Array/Int32Array"]) + int32Array_sheet.delete_rows(2, int32Array_sheet.max_row) + + # 新增 Uint32Array sheet 相关逻辑 + uint32Array_sheet = workbook.create_sheet("Uint32Array") if "Uint32Array" not in workbook.sheetnames else workbook["Uint32Array"] + uint32Array_sheet.append(["Case", "Uint32Array", "SendableUint32Array", "SendableUint32Array/Uint32Array"]) + uint32Array_sheet.delete_rows(2, uint32Array_sheet.max_row) + + # 新增 Float32Array sheet 相关逻辑 + float32Array_sheet = workbook.create_sheet("Float32Array") if "Float32Array" not in workbook.sheetnames else workbook["Float32Array"] + float32Array_sheet.append(["Case", "Float32Array", "SendableFloat32Array", "SendableFloat32Array/Float32Array"]) + float32Array_sheet.delete_rows(2, float32Array_sheet.max_row) + + # 新增 Map 相关逻辑 + map_sheet = workbook.create_sheet("Map") if "Map" not in workbook.sheetnames else workbook["Map"] + map_sheet.append(["Case", "Map", "SendableMap", "SendableMap/Map"]) + map_sheet.delete_rows(2, map_sheet.max_row) + + # 新增 Set 相关逻辑 + set_sheet = workbook.create_sheet("Set") if "Set" not in workbook.sheetnames else workbook["Set"] + set_sheet.append(["Case", "Set", "SendableSet", "SendableSet/Set"]) + set_sheet.delete_rows(2, set_sheet.max_row) + + try: + with open(local_log_file, 'r') as file: + log_content = file.read() + for line in log_content.split("\n"): + line = line.strip() + if "--" in line and "ms" in line: + if whole_word_match(line, "Array") : + array_data_keywords = [("normal Array:", float), ("sendable Array:", float)] + process_sheet(line, array_sheet, ["Case", "Array", "SendableArray", "SendableArray/Array"], array_data_keywords) + elif whole_word_match(line, "Int8Array") : + int8array_data_keywords = [("normal Int8Array:", float), ("sendable Int8Array:", float)] + process_sheet(line, int8array_sheet, ["Case", "Int8Array", "SendableInt8Array", "SendableInt8Array/Int8Array"], int8array_data_keywords) + elif whole_word_match(line, "Uint8ClampedArray") : + uint8ClampedArray_data_keywords = [("normal Uint8ClampedArray:", float), ("sendable Uint8ClampedArray:", float)] + process_sheet(line, uint8ClampedArray_sheet, ["Case", "Uint8ClampedArray", "SendableUint8ClampedArray", "SendableUint8ClampedArray/Uint8ClampedArray"], uint8ClampedArray_data_keywords) + elif whole_word_match(line, "Uint8Array") : + Uint8Array_data_keywords = [("normal Uint8Array:", float), ("sendable Uint8Array:", float)] + process_sheet(line, uint8Array_sheet, ["Case", "Uint8Array", "SendableUint8Array", "SendableUint8Array/Uint8Array"], Uint8Array_data_keywords) + elif whole_word_match(line, "Int16Array") : + Int16Array_data_keywords = [("normal Int16Array:", float), ("sendable Int16Array:", float)] + process_sheet(line, int16Array_sheet, ["Case", "Int16Array", "SendableInt16Array", "SendableInt16Array/Int16Array"], Int16Array_data_keywords) + elif whole_word_match(line, "Uint16Array") : + Uint16Array_data_keywords = [("normal Uint16Array:", float), ("sendable Uint16Array:", float)] + process_sheet(line, uint16Array_sheet, ["Case", "Uint16Array", "SendableUint16Array", "SendableUint16Array/Uint16Array"], Uint16Array_data_keywords) + elif whole_word_match(line, "Int32Array") : + Int32Array_data_keywords = [("normal Int32Array:", float), ("sendable Int32Array:", float)] + process_sheet(line, int32Array_sheet, ["Case", "Int32Array", "SendableInt32Array", "SendableInt32Array/Int32Array"], Int32Array_data_keywords) + elif whole_word_match(line, "Uint32Array") : + Uint32Array_data_keywords = [("normal Uint32Array:", float), ("sendable Uint32Array:", float)] + process_sheet(line, uint32Array_sheet, ["Case", "Uint32Array", "SendableUint32Array", "SendableUint32Array/Uint32Array"], Uint32Array_data_keywords) + elif whole_word_match(line, "Float32Array") : + Float32Array_data_keywords = [("normal Float32Array:", float), ("sendable Float32Array:", float)] + process_sheet(line, float32Array_sheet, ["Case", "Float32Array", "SendableFloat32Array", "SendableFloat32Array/Float32Array"], Float32Array_data_keywords) + elif whole_word_match(line, "Map") : + map_data_keywords = [("normal Map:", float), ("sendable Map:", float)] + process_sheet(line, map_sheet, ["Case", "Map", "SendableMap", "SendableMap/Map"], map_data_keywords) + elif whole_word_match(line, "Set") : + set_data_keywords = [("normal Set:", float), ("sendable Set:", float)] + process_sheet(line, set_sheet, ["Case", "Set", "SendableSet", "SendableSet/Set"], set_data_keywords) + workbook.save(excel_file) + print(f"成功将结果保存在 {excel_file}") + except FileNotFoundError: + print(f"日志文件 {log_file} 未找到,请检查。") + +def main(): + global file_name + global log_file + global current_dir + global device_dir + global local_log_file + global device_log_file + global files + global excel_file + + current_dir = os.getcwd() + current_time = datetime.now().strftime('%Y%m%d_%H%M%S') + files = ["collections.abc", "ark_js_vm"] + device_dir = "/data" + log_file = f"collections_data_{current_time}.log" + device_log_file = f"{device_dir}/{log_file}" + local_log_file = f"{current_dir}/{log_file}" + excel_file = f"collections_data_{current_time}.xlsx" + local_excel_file = f"{current_dir}/{excel_file}" + + # 发送文件到设备 + send_files_to_device() + # 设置文件的可执行权限 + set_executable_permission() + # 在设备上执行命令并将结果保存到日志文件 + execute_command_on_device() + # 将日志文件从设备回传到本地 + pull_log_file() + # 解析日志文件并生成excel + parse_log() + +if __name__ == "__main__": + main() \ No newline at end of file -- Gitee