有哪些好用的翻译器拍照扫一扫软件?大家在日常生活中难免会遇到一些不认识的外语,比如英文菜单、韩文说明书、日语漫画、法语文件等,如果没有中文版就很难看懂到底是什么意思,如果一个单词一个单词地去查询翻译的话就太慢了,手打输入的方式也非常麻烦,因此小编今天要给大家分享的就是超级好用的拍照翻译软件,非常简单好用,而且翻译的准确度也很高哦。
方法一、风云扫描王
这是一款很便捷的手机办公软件,里面有很齐全的扫描功能,可以快速扫描文件生成电子版、识别提取图片中的文字,还能扫描证件、表格等等,它还有【拍照翻译】的功能,不管我们是在什么情况下遇到不认识的外语都可以快速拍照翻译哦。
打开【拍照翻译】功能之后,我可以选择拍摄照片或者从相册导入图片,然后点击【翻译】就可以将图片中的外语翻译成中文了哦。
方法二、搜狗输入法
很多小伙伴手机上应该都有搜狗输入法吧,平时大家更多的是用它来输入文字内容,但其实这个软件里有很多便捷的功能,我们可以在【AI服务】里看到有【录音转文字】【拍照转文字】等功能,还有【拍照翻译】功能哦。
我们打开【拍照翻译】功能之后,和上面一样,也是可以选择现场拍摄照片或者从相册导入图片,软件会自动检测图片中的语言,点击【翻译】之后就可以将图片中的外文翻译成中文了哦。
以上就是小编分享给大家的两个超级简单好用的拍照翻译软件,不管在什么情况下,遇到不认识的外语都可以拿出手机拍下来,立刻就能知道是什么意思了哦;不光生活中可以使用,在工作中遇到外文文件、在学习时遇到翻译困难的地方都可以使用这两个工具来拍照翻译哦。
(全球TMT2022年12月23日讯)塔塔通信(Tata Communications)宣布已通过其全资拥有的国际子公司Tata Communications(荷兰)B.V.签订收购The Switch Enterprises LLC的最终协议。The Switch总部位于纽约,是一家全球领先的端到端视频制作和传输服务提供商,业务覆盖北美顶级体育场所。通过这项交易,塔塔通信将在美洲媒体和娱乐市场占据强大地位,将产品组合扩展到实时视频制作领域,并将作为端到端媒体生态系统参与者在全球整体内容开发价值链中获得独特地位。
根据协议条款,塔塔通信同意以现金交易方式(需符合惯例交易完成调整)收购The Switch Enterprises, LLC 100%的股权及其部分国际资产,价值约5880万美元(约48.63亿卢比)。交易的完成取决于监管机构的批准。随着两家公司的合并,塔塔通信将通过覆盖190多个国家和地区的业务范围为The Switch客户提供支持,并将为The Switch带来最先进的实时制作能力,帮助各组织更快速、更高效地制作高质量、更具沉浸性的内容。交易完成后,The Switch Enterprises将加入塔塔通信的媒体和娱乐服务(MES)业务,接受Dhaval Ponda的领导。
现在很多朋友喜欢通过拍摄短视频来记录我们的生活,拍摄的视频我们还需要编辑,我们通常需要对视频进行截取,去剪辑并删除不需要的视频,目前有很多各种视频剪辑处理软件,有什么软件可以让大家制作出让更多的人喜欢的视频,不知道用什么视频剪辑软件的小伙伴这里小编推荐几款软件,能使视频素材效果更好。
专门做视频的软件
方法一:风云视频转换器
大家可以使用“风云视频转换器”打开软件进入到首页您可以看到各种功能,点击“视频剪辑”功能,点击进入我们将添加要编辑的视频,您可以在列表中看到视频的具体信息,点击右侧的“视频裁剪”,根据自己的需要拖动视频进行剪辑,最后,编辑后,保存设置,点击全部裁剪按钮完成。“风云视频转换器”软件包含括6个功能模块,这些功能都将用于后期视频编辑,包括视频合并、视频分割、视频到GIF等,大家可以在几分钟内制作专业视频。
方法二:Adobe Premiere
大家打开软件点击左上角的“文件”导入视频,然后可以根据自己的需要进行编辑,当视频导出时,您还可以设置各种参数以获得我们想要的视频。软件有多种编辑工具和特效,可以轻松满足我们的各种需求。
方法三:GiliSoft Video Editor
GiliSoftVideoEditor软件支持各种视频文件来加入视频和分割视频,该软件可实现视频分割和视频切割功能,大家点击进入后,选择批量截取”功能,,软件打开需要截取的视频,点击添加文件,添加后我们点击播放按钮进行播放,然后拖动进度条进行切割,切割完毕后需要输出剪切的文件,点击浏览,选择输出路径,设置完毕,点击开始就会自动切割。
好了,以上三个工具软件可以帮助大家视频截取,大家可以根据自己需求进行选择,有需要的小伙伴快来试试吧。
【爱集微点评】赛昉科技的RISC-V专利,在重命名阶段增加余数指令加速单元,通过余数指令的目的寄存器映射到除法指令写余数的物理寄存器,取到除法指令产生的余数,以此提升余数指令执行的效率。
集微网消息,近日国内首款基于RISC-V芯片的工业防火墙取得阶段性成果,而产品主要基于赛昉科技自研的RISC-V芯片。
微处理器的架构伴随着半导体工艺经历了蓬勃的发展。从单核到物理多核及逻辑多核、从顺序执行到乱序执行、从单发射到多发射等等,尤其在服务器领域,不断的追求处理器的性能。随着数据中心和科学计算的要求越来越高,对除法及余数指令的性能要求也越高,同时指令中的除法和余数指令比重逐渐升高。除法和余数指令执行周期比较长,同时执行周期与数据相关,执行周期可变,这些因素对CPU的性能影响很大。
为此,赛昉科技于2021年1月18日申请了一项名为“一种RISC-V指令集余数指令的实现方法及系统”的发明专利(申请号:202110062056.X),申请人为广东赛昉科技有限公司。
图1 余数指令实现架构图
图1是本发明提出的余数指令实现架构图,该方法在重命名阶段通过增加一个余数指令加速单元实现余数指令的功能。当除法和余数指令配对出现时,余数指令不需要发射到后续除法执行单元,而是通过余数指令的目的寄存器映射到除法指令写余数的物理寄存器,取到除法指令产生的余数。
在乱序执行的CPU中,指令从取指单元进入指令译码单元,进行指令译码。译码完成后的指令在重命名单元进行目的寄存器的重命名,并且在重命名阶段对余数指令进行优化。如果余数指令不满足优化条件时,重命名之后的指令进入保留站后,进入执行单元执行。执行完成后的指令通过重排序缓存提交,并且释放在重命名阶段分配的除法指令编码缓存等资源。
表1 除法与余数指令编码
表1为除法与余数指令编码表,在指令译码阶段产生除法指令和余数指令的一个新操作码N_OP。对除法和余数指令的N_OP编码,除法指令和余数指令可以配对的组合为:000与100,001与101,010与110和011与111。N_OP中除法指令的编码称为DIV_N_OP;N_OP中余数指令的编码称为REM_N_OP。
余数指令加速单元中的除法指令编码缓存保存了需要配对的除法指令及相关信息。当除法指令写入到除法指令编码缓存的时候,需要判断是否有空闲的entry,将除法指令的信息写到对应的entry。当余数指令的标识rem_val有效时,即表示当前指令为余数指令。余数指令的编码REM_N_OP匹配除法指令编码缓存中的除法指令编码DIV_N_OP。同时如果有效位valid有效,那么该条余数指令匹配成功,即div_rem_hit为1。余数指令目的寄存器rem_rd映射到除法物理寄存器rem_phy_reg。
图2是除法与余数指令配对相邻图
图3是除法与余数指令配对不相邻图
图2、3为除法与余数指令配对相邻图和不相邻图。在重命名阶段的时候,如果流水线中的除法和余数指令存在配对,并且除法和余数指令之间不存在/存在其它指令,那么配对指令中的余数指令都不需要执行,即该余数指令不需要发到后续的流水线,余数指令的功能完全被配对的除法指令实现。
简而言之,赛昉科技的RISC-V专利,在重命名阶段增加余数指令加速单元,通过余数指令的目的寄存器映射到除法指令写余数的物理寄存器,取到除法指令产生的余数,以此提升余数指令执行的效率。
赛昉科技成立于2018年,提供全球领先的基于RISC-V指令集的CPU IP、SoC、开发板等系列产品和解决方案,是中国RISC-V软硬件生态的领导者。成立至今,赛昉科技已相继推出了多款基于RISC-V的产品,而这次国内首款基于RISC-V芯片的工业防火墙的成果,也再次印证了赛昉科技在RISC-V领域的强大实力。
中国IDC圈讯 近日,工信部公布2022年第42批《中华人民共和国增值电信业务经营许可证》发放名单,其中获得IDC牌照的企业30家, 获得CDN牌照的企业18家。
具体名单如下:
-第42批IDC牌照名单-
-第42批CDN牌照名单-
单纯的编程语法可能看起来很简单,但在实际编程中,总会出现各种意想不到的bug,今天给大家分享几个点C语言中坑人的操作。
1
带参数的宏展开顺序
运行结果:
浅析:
本题中的#运算符可以利用宏参数创建字符串。##运算符和#运算符一样也可以用于类函数宏的替换部分。另外,##还可以用于类对象宏的替换部分,这个运算符可以把两个语言符号组合成单个语言符号,所以该运算符也被成为“预处理粘合剂”。类参数宏展开遵循一定的顺序,先从外层开始探寻如果遇到#即刻结束探寻,从遇到#处开始一步一步向外层展开,如果没有遇到#探寻到最里层结束探寻,然后一步一步向外层展开。
所以printf("%s ",h(f(1,2)));这条语句的展开顺序为:h(f(1,2))(没有#)? --->>? f(1,2)(到达最里层依然没有#)? ---->>? h(12)? ---->>? 12。
然而printf("%s ",g(f(1,2)));这条语句的展开顺序是:g(f(1,2))(碰到#即刻结束探寻,开始展开)? ----->>f(1,2)。
2
类型转换
运行结果:
浅析:
3
溢出问题
程序一:
运行结果:
死循环
浅析:
该题的坑就在于没有注意到unsigned int 的存储范围,当小于零溢出时又会从unsigned int 的最大值开始递减,这就仿佛进入了一个圆环,永远都没有办法找到跳出圆环形跑道的缺口。
程序二:
运行结果:
255
浅析:
这道题看上去很简单但是却暗藏杀机,很少有人能够答对,当i从0开始自增,自增到127时-1 - 127=-128,而这个数正好是char型变量所能表示的最小数字,i再自增一次就会溢出,变成char所能表示的最大数字,这样又进入了上一题的那个“环”,当i增加到255时-1 - i=0,此时第一次出现了0,而strlen函数碰到'\0'就结束(不包括),因此输出结果为255。
4
strcpy函数
浅析:
这段代码第一眼看过去是没问题的,但是再看一眼就能够很轻松找到错误了,strcpy函数是拷贝字符串的函数,它是以'\0'为结尾的。因此,当程序运行strcpy这一行时会发生内存非法访问导致程序崩溃。
在默认情况下,会将数据备份多少份以提高数据的安全性,根据Ha doop的特对越来越大的数据量和日益严重的网络安全问题,达到容灾备份容错的目的,数据备份技术显得日益重要。传统的数据备份主要通过单一存储介质实现,这种实现方法简单廉价,但是安全性较低,且扩展性差。
云呐——容灾备份系统是针对中小企业推出的云上灾备解决方案,以降低不必要的成本为目标,利用云自身灵活弹性的特点和云呐的独有技术实现高度自动化的云灾备过程,让中小企业都能用得起云备份容灾。
日本海外仓是许多中日跨境企业的选择。通过在日本建立海外仓库,提高订单交付能力,可以减少时间,提高效率,提高产品竞争力,增加交易量。因此,许多中日跨境企业更倾向于选择日本海外仓。然而,许多企业可能只了解日本海外仓的优势。而不清楚海外仓库会产生什么样的成本,什么样的商品会更适合海外仓库。今天详细了解一下。
一、日本海外仓会产生哪些费用?
1.日本头程运费:
卖方通过海运或空运将货物运输到日本的费用取决于客户选择的运输方式。选择海运比空运便宜;
2.日本海外仓仓储费:
费用一般按货物占用面积和重量计算,每月计算一次。具体收费标准可咨询卖方选择的海外仓储公司;
3.派送费:
日本海外仓基本都会提供送货服务,可海外仓自由团队或当地物流公司提供,但需要支付送货费;
4.管理费:
日本海外仓人员的货物输入系统、包装、货物管理费用;
5.服务费:
现在日本海外仓还将涉及中转、贴标、换标等服务,这些服务会产生一定的服务费。
二、什么样的产品更适合海外仓库?
大尺寸、重量产品:这些产品使用小包、专线递送规格将受到一定限制,如果选择国际跨地成本更贵,使用日本海外仓库将突破产品规格限制,降低物流成本;
单价、毛利润高的产品:优质海外仓库服务提供商可以最大限度地控制损坏率和丢失率,降低销售高价值商品的卖家的风险,如手机、电脑、配件、相机等单价较高的电子产品更适合选择海外仓库;
商品周转率高的产品:对于畅销产品,卖家可以通过海外仓库更快地处理订单,提取资金;对于滞销产品,占用资金也会产生相应的仓储成本,相比之下,高周转率的商品更适合使用海外仓库。
Copyright ? 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
IT之家 12 月 23 日消息,统信软件及深度宣布,2022 深度开发者与用户大会(DDUC)将在 12 月 24 日下午 15 点举行,这是第十二届 DDUC 活动。deepin 进化之路上的同行者和见证者们会在云上相聚,一同庆祝 deepin 进化 15 年的成果,也一起聊聊 deepin 接下来将如何努力进化。
据介绍,2008 年,基于 Ubuntu 社区发布 deepin 版本;2015 年,基于 Debian 社区打造国内外知名的 deepin V15;2022 年,deepin 顺势而为走向上游,打造首个中国开源桌面操作系统根社区。
数十万 deepin 开发者齐心共建,基于 Linux 内核完全自研了 DDE 桌面环境、编程语言 Unilang、软件包格式“玲珑”和四十余款应用,齐心打造更开放、更安全、更稳健的桌面操作系统。
IT之家了解到,如今,一步一步走向上游的 deepin 在全球拥有 300 多万用户,支持 33 种语言,累计下载量超过 8000 万次,自研桌面环境 DDE 被开发者移植到 Arch Linux、Fedora、Debian、Ubuntu、openSUSE 等全球主流 Linux 发行版中。
12月23日,商务部召开例行新闻发布会。
【中央人民广播电台记者】:各地目前纷纷助力外贸企业“出海”洽谈、促进贸易、开拓市场,请问商务部对此如何评价?下一步是否有更多举措助力外贸企业“走出去”?
商务部:当前,外贸形势复杂严峻,不少外贸企业在手订单不同程度下滑,一些劳动密集型产品受影响较大。针对上述情况,各地积极采取多种措施帮助企业应对。商务部将继续指导各地方,从三方面发力,支持广大外贸企业开展贸易促进和供采对接,更大力度推动外贸稳规模、优结构。
一是便利商务人员往来。商务部将继续支持各地方利用商务包机和商业航班资源,便利外贸企业人员出境参加展会、开展商洽等商务活动。同时,还将适时推动优化对入境人员的服务保障措施,为境外商务人员来华开展商务洽谈活动提供更多便利。
二是发挥各类展会作用。商务部将会同各地方加大对企业参展的支持力度,研究符合条件的展会适时重启线下展,继续高质量培育线上展。积极支持有条件的地方扩大境外办展规模,服务更多外贸企业。
三是帮助外贸企业获取海外市场信息。针对部分中小外贸企业反映海外市场信息获取难、贵的问题,商务部将指导地方、相关机构提升海外市场信息服务供给能力,支持中小外贸企业获得更多优质信息服务。
? 运营网站重要的是找到一家可靠且价格合理的IDC服务商,该公司将帮助您存储全部网站数据。使用此类服务,您的网站能够快速向客户的浏览器供给全部需求的内容。在为您的网站或博客选择适宜的美国云服务器服务商之前,您应该记住以下几点。
1、服务器可靠性/正常工作时刻得分
当企业的服务器宕机几分钟时,他们的收入几乎是他们收入的一半。至少能够说,坚持在线对您的网站十分重要。为此,您需求查看您的网络主机的可靠性信用有多安稳。有了新技术,有许多服务器监控工具能够帮助您盯梢您的网站,但通常,重要的是查看它们的正常工作时刻分数并查看它是否满意安稳以出资工作您的网站。专业的云服务商99.95% 的正常工作时刻,具有在强壮服务器和十分安稳的网络连接上工作的IDC服务商,能够保证您的网站停机概率低。
2、24/7 客户服务
不论您了解多少以及您具有多少信息和知识,您都需求某种技术支撑来构建和运营您的网站。关于新客户,会呈现许多需求当即答复的问题,以便您的网站获益并一直让您的客户满意。产生此类情况时,您需7x24小时供给技术支撑。如果您选择一家好的IDC服务商,它将以多种方法帮助您获得良好的支撑。关于任何企业来说,客户服务是任何正在工作或现已发起的网站或公司最重要的机构。不论您是新老客户,您都必须让您的客户对您的服务感到满意,尽快答复他们的问题是取悦他们的最佳方法。
3、存储空间和带宽
其次,在选择 Web 保管服务时,要考虑的基础和空间存储量是一个广泛的选择,以便存储整个数据库以及不同的文件和媒体。网站越小,您需求的磁盘空间就越小,反之亦然。关于中小型网站来说,几GB的存储空间就满意了,因此网站的大小抉择了该功用的重要性。因此,在选择IDC服务商时,请确保您有满意的空间来存储网站数据。
(注:本文属【恒创科技】原创,转载请注明出处!)
你是否还在为了下载的视频素材带有水印而感到烦恼?大家都知道当下我们在各大平台下载的视频素材总会带有平台的水印,这给我们在使用素材时,制造了很多的局限性,要想打破素材使用的局限,可以尝试一些可以将视频中水印的软件,但是现在的去水印软件越来越多,你们知道该如何选择吗?下面就让我来告诉大家视频去水印软件哪个好用?一起来看看吧!
软件推荐一:无痕去水印
这是一款操作简单,非常好上手的去水印软件,它可以将视频中的水印轻松去除,采用AI智能去水印技术,去除后视频无痕迹,并且也不会影响原视频的清晰度和流畅度,让你解决水印烦恼,同时它还可以设置水印去除的作用时间,这样能够方便你将视频中的水印去除。
它还有APP端的,内置功能多元化,除了视频去水印的功能外,还支持其它的视频/图片编辑工具,基本能够满足我们对图片/视频的编辑需求。
软件推荐二:微信
这是我们现在最常用的一款社交软件了,不知道大家在发送视频到朋友圈的时候,是否有发现,它在发送之前可以让你先进行简单的编辑处理呢?操作起来也不难,那就是直接用贴纸直接将其水印覆盖,不过要注意的是,在使用贴纸之前,先要将它贴纸保存在自己的表情包中。
软件推荐三:图库
这是大多数手机都有自带的一个软件,它不仅可以让我们查看和分享图片,还能让我们对视频/图片进行简单的编辑和裁剪。当然,我们可以借助它的“裁剪”工具在水印位于边缘处将其适当的剪切,大家有需要的话,也可以试试看。
以上就是我为大家推荐的三款软件,你们是否已经知道视频去水印软件哪个好用了呢?需要去水印的小伙伴快去试试看吧!
导读|Hippy使用JS引擎进行异步渲染,在用户从点击到打开首屏可交互过程中会有一定的耗时,影响用户体验。如何优化这段耗时?腾讯客户端开发工程师李鹏,将介绍QQ浏览器通过切换JS引擎来优化耗时的探索过程和效果收益。在分析Hippy耗时瓶颈、对比业界可选引擎方案后,最终QQ浏览器通过选择使用Hermes引擎、将JS离线生成Bytecode并使用引擎直接加载Bytecode,让首帧耗时优化50%起。希望本文对面临同样困扰的你有帮助。
背景
目前QQ浏览器(下简称QB)使用Hippy的业务超过100个,基本上95%的核心业务都是使用Hippy作为首要技术栈来开发。但是跟Native相比较而言,Hippy是使用JS引擎进行异步渲染,在用户从点击到打开首屏可交互过程中会有一定的耗时,影响用户体验。如何优化耗时,尽量对齐Native体验,想必是许多开发者都在思考优化的事情。
本文主要介绍QQ浏览器通过切换JS引擎来优化耗时的探索过程和效果收益。本文我将分析Hippy执行流程及耗时瓶颈、对比业界JS引擎方案,最终选择使用Hermes引擎。之后分析将JS离线生成Bytecode,使用引擎直接加载Bytecode的能力。值得一提的是,在业务无需修改一行代码的前提下,Hippy的包加载速度提高80%,首帧耗时优化50%起。下面我将展开讲述。
Hippy业务耗时瓶颈分析
Hippy整个启动流程依赖JS线程的执行。我们其实可以将整个过程抽象看成一个串行的操作,以QB冷启动首页Feed流,结合线上数据性能监控可以看到如下阶段耗时:
注:TTI=Time To Interact,意思是从业务创建到业务可交互所花费的时间,因为衡量业务可交互比较复杂,各个业务对可交互的定义不一样,所以这里以首帧上屏为准来衡量;
通过打点分析得到,用户从打开业务创建RootView开始,到最终首帧上屏总共耗时1488毫秒,其中主要在Module初始化、创建HippyCore(bootstrap.js以及common包执行耗时)、业务包执行耗时上。其中加载执行业务包耗时1303毫秒,占整体TTI的87%。
如果我们能够优化加载执行业务包的耗时,那么我们就可以极大的降低TTI。在iOS上Hippy使用的是系统提供的JavascriptCore引擎来运行JS代码,所以我们要分析一下JSC的执行过程。
JavascriptCore执行流程分析
具体流程:词法分析,输出tokens;语法分析,生产AST(抽象语法树);从AST生成字节码;?通过Low Level解释器执行字节码;使用JIT加速解释执行机器码(带JIT的版本)。
注:本文JSC是指苹果官方提供的JavascriptCore.framework,JSC分带JIT与不带JIT的版本,带JIT的版本目前只有苹果自家的Safari能够使用,公开的JavascriptCore因为安全原因(JIT可以动态执行机器码),实际是不带JIT的版本。下面讨论的也是指不带JIT的JSC版本。
整个流程,在JS代码被解释执行前,绝大部分时间消耗是在字节码生成上。如果能将Bytecode生成前置缓存起来,每次执行JS的时候直接取缓存的Bytecode,那将会极大降低耗时。但是很可惜的是,JavascriptCore属于系统库,并没有提供这个能力。我们可以考虑选择其他支持Bytecode的引擎替换掉JSC。
可选引擎对比
除了JSC,常见的开源引擎包括V8、QuickJS、Hermes。
注:直出是指支持编译输出Bytecode文件,并且直接运行Bytecode。
Hermes和QuickJS支持直出Bytecode,并且在包大小上对比V8和JSC占优。
1)性能指标对比
以下各项对比取至Linux上各引擎测试数据
包加载耗时速度对比(越低越好)
使用引擎执行业务JS代码,其中JSC和V8均是直接执行JS代码,QuickJS和Hermes是执行Bytecode。
QuickJS一骑绝尘,Hermes紧跟其后,JSC次之,V8最差;
执行效率对比(越高越好)
使用引擎跑一些开源的算法或者知名JS功能库。
V8和JSC性能最好,Hermes次之,QuickJS最差;
内存增量(越低越好)
表现最好的是JSC,其次是Hermes和V8;带JIT的JSC和V8,内存消耗最高;
编译文件大小
衡量编译文件压缩比是为了衡量包下发更新效率,以QB首页Feed流(3.8M左右)举例,JSC和V8均输入原始js文件,QuickJS和Hermes输入JS编译后的Bytecode文件。
JSC和V8压缩比较高,Hermes和QuickJS压缩比不高,在下发效率上,差于JSC和V8;
2)结论
从执行耗时、执行性能、内存增量、编译文件大小以及整体framework大小5个纬度来分析看:?带JIT的JSC和V8性能最好,但是加载时间是最长的,内存消耗也是最多的,包也较大;支持提前预编译的Hermes和QuickJS,加载速度以及内存表现是最好的。?
对于提高TTI,加载速度指标最为重要。虽然性能低于JSC和V8,但是对于JS耗时高的操作,可以充分利用modules放在Native去操作;所以基于以上,会优先考虑Hermes和QuickJS;
Hermes在性能、内存以及编译包大小上是优于QuickJS的,另外Hermes有Facebook的React Native社区生态支持,相较于QuickJs更新演进更快,所以更倾向使用Hermes来替换JSC。
Hermes引擎调研
1)编译
Hermes虽然是深度集成在React Native里的,但是facebook也将单独的引擎独立出来了,官网地址 仓库地址 编译指南。
按照编译指南编译之后,实际编译的产物只是用于在PC/Mac/Linux运行的Hermes二进制文件。通过这些二进制文件,我们可以在Terminal里执行JS,以及将JS编译成Bytecode。
在移动端上,Hermes也是使用CMake进行编译,并且提供了脚本可以方便输出Android和iOS动态库。具体可以在官网上查看编译指南。
2)运行
Hermes包含几个非常重要的结构对象,下面主要讲其中的几个。
Runtime
Hermes使用非常简单,提供了一个Runtime的抽象类,所有的js对象都执行在Runtime对象上,类似JSC的JSContext;派生了HermesRuntime子类来实现所有JS操作。通过静态方法创建一个HermesRuntime对象;
同时也提供了一些执行JS的方法
Value
JSC在处理基础数据的时候,所有的类型都是JSValue类型;处理Object是JSObjectRef对象,在Hermes上也有对应的实现;
提供方法判断是什么类型,以及快捷获取类型值,比如:
Object
Object对应就是JS的对象,基于Object派生Function以及Array和JSArrayBuffer,同样Object也提供很多方法获取和设置属性。?
Runtime提供一个默认的全局对象global, 所有的JS逻辑均运行在默认的global之上。Object也提供很对方法获取属性,比如:
Function
对应JS的Function,提供静态方法创建Function:
提供实例方法调用:
同样还有Array,ArrayBuffer,HostObject等等。
通过Runtime,我们可以获取JS Object、Function,同时我们也可以创建JS Object、Function,注入给JS,这样就可以实现双向通信。
Hippy2.0架构分析
1)架构
包含三层:
和平台相关的能力扩展比如Module能力和UI组件,以及调用底层HippyCore的接口封装的Bridge和JS Executor层,该层在iOS和Android上分别使用OC和JAVA实现。?
HippyCore层,通过napi对不同JS引擎的接口进行接口封装,抹平不同引擎的接口差异,让上层调用通过调用简单的接口实现复杂的能力,该层使用C++实现,跨平台。
前端JS SDK层,主要是定义了双向通信的方法函数跟上层进行通信以及功能处理。
另外还包括一些能力,基本是在hippycore层实现。比如C++ Modules, TurboModules等。
我们需要切换引擎,上下两层其实都不需要特别(大量)修改,核心就是在hippycore层,需要使用hermes将napi定义的接口全部实现一遍,以及同时实现现在已经有的Abilites。
napi
主要有几种概念:Engine:负责创建VM以及Scope;VM:负责创建管理Ctx,一个VM可以创建一个或者多个Ctx;Ctx:负责创建引擎实例,并封装操作引擎的接口供外部调用;CtxValue:负责封装不同引擎的JS Value;Scope:使用Ctx,执行Hippy基础初始化流程。?
Scope
主要负责Hippy基础初始化流程,核心步骤如下:
注入Natives方法
通过给JS注入Native Function方法的方式,让JS可以直接调用终端方法;主要是常见的JS侧CallNative方法均通过此进行分发。
执行JS Native Source Code
Hippy将一部分基础JS SDK代码,通过脚本将JS代码转换成二进制集成在hippycore的C++代码里,在通过Ctx执行这些JS代码。好处是:解决C++ Module跟JS侧代码一致性问题(均使用C++形式加载调用);对于常用的基础JS的SDK代码,不用打包到基础包里,可以减少Common包大小,另外职责也分离。
其中包括C++ Module跟JS对象绑定,以及TurboModule和DynamicImport均在此步骤进行定义实现;
Abilities
C++ Module:不同于Native Module字符串消息映射和TurboModule HostObject的实现,C++ Module是将HippyCore里标记为导出的C++Module和其函数对应在前端生成一个名字一样的JS对象和方法。Hippy里常见的TimeModule,ContextifyModule均是如此实现。
TurboModule:前有NativeModule,后有C++Module,为什么还有TurboModle?
NativeModule好处是对于一些能力要分端去实现的,两端实现起来比较方便,但是其是通过字符串映射到终端方法的方式进行调用以及存在JS线程到NativeModule线程切换效率问题。?
C++Module的好处就是在JS线程直接调用绑定JS对象和方法执行,效率高,但是暴露的Module是用C++实现,如果分发调用到Native侧,一个是要区分平台,第二个是分发到上层Java或者OC需要对应的类型转换。
为了解决上述问题,TuroboModule应运而生,兼具JS线程直接调用,并且不同平台可以分别实现自己的Turbo能力,关键是直接使用的引擎提供的HostObject方式实现,相较于C++Module 效率都更高。
Dynamic Import:动态导入能力,容许在JS侧动态加载远程或者本地JS代码,主要使用场景是对于分包加载,减少主包大小,提高业务加载包速度;最终实现也是通过C++Module ContextifyModule的LoadUntrustedContent方法来执行远端或者本地JS代码并返回给JS侧。
HippyCore异常处理:JS引擎接口异常,不同引擎异常不同(JSI Exception);Native异常,主要是Native侧的代码调用以及JS方法注入实现异常。
JSC引擎和V8处理逻辑不太一样,JSC的JSI接口会将Exception通过参数传递出来,V8是通过在调用上下文初始化TryCatch对象,对异常进行捕获。
所以对于JSC的JS异常,只需要处理接口的Exception就行;V8处理TryCatch对象捕获的异常就可以。?
Native异常一般就是平台相关的异常,比如OC就是NSException,在双向通信以及各种JS接口注入实现处加Try-Catch进行捕获。
2)总结
通过以上架构分析,Hippy整个实现流程都已经变得非常清晰,我们可以使用Hermes的能力将上述能力均实现一下。
Hermes接入对比
1)性能
基于已经上线的业务性能统计数据(数据取至12月12日),对比如下:
可以看到包加载执行耗时已经被彻底打下来了(70-80%幅度),进而极大降低了首帧耗时。
另外通过线上业务大盘整体耗时曲线图可以更直观看到效果(大部分业务没有全量,所以还会有持续下降的趋势):
2)内存
在滑动相同的的List Item的情况下,Hippy Hermes和JSC的内存增量差别不大。根据官方文档介绍Hermes应该是略优于JSC的,所以这里不排除Hippy或者前端SDK还有优化空间。
3)Crash
Hippy的JSC相关的Crash率较高,比较难修改。Hermes也有一定的crash,但是从目前的对比来看,数量级较JSC少很多。以12月12日,iOS 13.4.0.5401版本的数据对比来看,Hermes的Crash率为JSC的50%,也就是说如果切换到Hermes上的话,相关引擎的Crash会下降一半。
JSC Crash关键词:jscctx/HippyJSCExecutor ? Hermes Crash关键词:hermes/HippyHermesExecutor
展望
目前Hermes已经在QB iOS版本上上线。业务接入成本非常低,无需修改一行代码,只需要打包的时候使用插件,输出Bytecode文件即可。接入上线的业务已经遍布信息流、阅读、商业、搜索等各个业务场景。
当然,还有很多事情可以持续做以持续提升性能:?Android接入,对比V8性能,已经接近完成(对比V8,在低中端手机上有近50%的性能提升)。Hermes调试能力,可以使用Hermes在Chrome上调试JS代码。?基于Hermes的内存调试诊断工具。本文不展开赘述,欢迎各位开发者交流探索~
通过接入Hermes,可以让业务更多的关注在JS业务逻辑里,让前置SDK流程的耗时不再是性能瓶颈。希望本文能给你灵感。
广西壮族自治区图书馆
尊敬的读者:
经研究决定,广西壮族自治区图书馆调整部分区域开放安排,现将有关事项通告如下:
自2022年12月23日起,阅览大楼二楼少儿书刊借阅室、地方民族文献中心大楼二楼智慧成长屋,以及人民公园分馆暂停开放。期间,读者如需归还少儿图书,请移步至24小时自助图书馆进行自助还书。
以上区域恢复开放时间将另行通知,请各位读者通过广西壮族自治区图书馆官网、微信服务号、订阅号、微博等渠道了解最新动态。
感谢您的理解、支持与配合!
广西壮族自治区图书馆
2022年12月22日
DoNews 12月23日消息(丁凡)日前,擎天智卡宣布推出基于征程5芯片的“擎天自动驾驶系统”,成为首家使用地平线征程5芯片的商用车高级辅助驾驶量产解决方案供应商。该系统完美融合了擎天的软件算法优势与征程5芯片的超强算力,实现了高速场景下重型卡车的点对点自动驾驶。该自动驾驶系统的亮相,填补了商用车自动驾驶解决方案国产化的空白,该系统计划在2023年实现量产。
据悉,擎天自动驾驶系统集成了车道保持(LKA)、全速自适应巡航(ACC)、交通标志识别(TSR)、自动紧急刹车(AEB)、车道级导航、自动换道(ALC)、自动汇入/汇出匝道等功能,实现了重卡在高速场景下的点对点自动驾驶。在紧急情况发生时,车辆不需要驾驶员干预,可自动完成靠边停车,为车辆及乘员安全保驾护航。目前该系统支持夜间、雨天及隧道等特殊使用场景,未来将继续拓展覆盖更多场景。
擎天自动驾驶系统基于地平线第三代车规级芯片征程5打造,征程5单颗芯片算力高达128 TOPS,擎天智卡与地平线的战略合作,标志着中国自动驾驶行业,开启了软件+硬件的全面国产化进程。“融合、创新、共进”是两家企业未来的战略合作目标。双方将利用各自的技术研发能力共同承担更多社会责任,借力于技术和产品的双驱动,通过软件和硬件的强强联合,提供商用车自动驾驶全栈解决方案,助力产业升级,并以全新的视角对行业进行不断探索和规划。