# jetstream2合作共建 **Repository Path**: qishui7/jetstream2_workload ## Basic Information - **Project Name**: jetstream2合作共建 - **Description**: 共建 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-11-06 - **Last Updated**: 2024-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## jetstream2_workload 目录结构 ### 根目录 根目录用来放置各个独立的测试用例,比如richards,Splay 等 ### 子目录 子目录 分为 codes (用来存放swift和ts代码,以及原始的js代码),doc(用来存放对应设计以及自测试的相关验收文档) ### 例子 - richards - codes - swift - richards.swift - ts - richards.ts - js - richards.js - doc - richards测试报告.docx - richards详细设计.docx ## 文件命名格式 - 使用 英文小写,如遇到多单词,请用 - 链接, 例如: navier-stokes ## 文件内输出结果格式 - 使用 英文小写,如遇到多单词,请用 - 链接,使用英文 ":", 前面没有空格,后面有一个空格,"=" 两侧有空格,时间后面不要其他的 英文单词 例如: gaussian-blur: ms = 1234 ## 提交代码要求 - ArkTS 必须经过 DevEcho 的检查 - 必须关闭自测试时,用来输出中间过程日志的标志,确保输出只有最终的时间结果 - ArkTS不支持 console.log ,请 替换为print - 必须在真机上跑过的代码才能提交 ## js转写swift和ArkTS规范 ### 基本原则 - ArkTS要与Swift保持一致,如果swift没有js的特性,ArkTS也不要使用这个特性。 - 原型链与继承: 1.JavaScript中使用原型链实现继承; 2.Swift通过声明基类,继承使用基类,或者使用协议(protocol);达到JavaScript原型链效果; 3.ArkTS通过声明基类,继承使用基类,达到JavaScript原型链效果; - 属性声明: 1.JavaScript 属性可以不声明; 2.Swift 属性必须声明; 3.ArkTS 属性必须声明,且属性类型不能使用Any; - 可选类型: 1.JavaScript 可选声明对象类型 (Packet); 2.Swift 进行可选声明(Packet?); 3.ArkTS 进行可选声明 (Packet | null); - 自增运算符: 1.JavaScript 使用 ‘++’或‘+=1’; 2.Swift 必须使用‘+=1’; 3.ArkTS 使用 ‘++’或‘+=1’; - 字符串链接的方式: 1.JavaScript 不涉及; 2.Swift 使用 “this message is \\(需要值)”; 3.ArkTS 不涉及; - Swift 不能用Foundation库,替代Glibc的 数学函数命名和Foundation一样 ### review中的问题追踪 - swift代码中 函数入参 再函数体内需要被修改时,可以使用 "inout" 去修饰。 例如:func prepareFrame(d: inout [Double]){} , 需要注意:被修饰的参数在方法外被使用,就不要使用; - js中for循环只是简单的for(let i = 0; i < 5; i ++>){}自增循环,swift里可以使用for i in 0..<5{} 或者 ArkTS使用 for(let i = 0; i < 5; i ++>){},**其它情况使用repeat{}while()或while()**; - js里for的数组循环 ArkTS使用for(let v of array){}, swift使用 for v in array {}; - ArkTS中数组越界问题,需要添加方法判断,不能使用TS下标越界undefine; - swift代码中方法入参编写规范 **func test(_ a:A, _ b:B){};** - ts文件中获取时间戳的方法:let time = ArkTools.timeInUs() / 1000 - if判断object是否有值,请 按照 if(obj != null){...} ,不要写成 if(obj){...} - ArtTS里禁用 type - 可变参数,需要swift和arkTS同时使用新变量接收,随后在进行处理 - arkTS里不要使用 ++i, i++ 等操作, 一律改成 +=1 - 在swift和arkTS里,显示声明 map和 dict ,不要用隐式的 [:] - 确保swift和arkTS里业务逻辑一致(zlib review发现 if else ArkTS和swift 实现不一致, matchList.isEmpty 和 matchsList != null 也不等价) - string截取 swift使用subString(with:1..<5),arkTS使用slice(1, 5) - 数组反转 swift使用reversed(),arkTS使用reverse() - 数组截取 swift使用array[1...3],arkTS使用array(1, 4) - 数组添加数组 swift使用 array1 + array2, arkTS使用array1.concat(array2)