本发明专利技术提供了一种利用数组池优化javaScript/typeScript程序内存性能的方法,涉及基于javaScript/typeScript动态语言处理类型化数组时的内存优化技术领域,该方法针对javaScript/typeScript动态语言处理类型化数组时,执行包括:数组池建立步骤:预先建立数组池;数组申请步骤:将创建二进制数组的操作改为向数组池申请数组;数组归还步骤:将销毁二进制数组的操作改为向数组池归还数组。本发明专利技术能够将正常创建和销毁的二进制数组变为向数组池申请数组和归还数组,减少调用垃圾回收机制的性能开销,起到优化javaScript/typeScript程序运行时的效果。
【技术实现步骤摘要】
利用数组池优化javaScript/typeScript程序内存性能的方法
本专利技术涉及基于javaScript/typeScript动态语言处理类型化数组时的内存优化
,具体地,涉及一种利用数组池优化javaScript/typeScript程序内存性能的方法。
技术介绍
在互联网+的时代,大量应用程序随着用户的需求诞生。性能优化一直伴随着应用程序的生命周期。javaScript/typeScript语言作为web端应用程序的头号选择,编写着大量应用程序,这些程序注重与用户交互,对性能也有更高的需求。因此对javaScript/typeScript语言的应用程序优化一直是研究热点。ArrayBuffer对象用来表示通用的、固定长度的原始二进制数据缓冲区。javaScript/typeScript类型化数组是一种类似数组的对象,并提供了一种用于访问原始二进制数据的机制。javaScript/typeScript的普通数组Array。存储的对象能动态增多和减少,并且可以存储任何javaScript/typeScript值。javaScript/typeScript引擎会做一些内部优化,以便对数组的操作可以很快。然而,随着Web应用程序变得越来越强大,尤其一些新增加的功能例如:音频视频编辑,访问WebSockets的原始数据等,很明显有些时候如果使用JavaScript代码可以快速方便地通过类型化数组来操作原始的二进制数据将会非常有帮助。JavaScript类型化数组分为缓冲和视图两部分。公开号为CN111367737A的中国专利技术专利,公开了一种优化内存性能测试的方法、装置,所述的方法包括如下步骤:计算内存带宽的理论值;执行内存测试脚本识别CPU型号选取测试工具进行设定次数的内存性能测试;汇总测试结果输出设定次数的性能测试的平均值;将平均值与理论值的设定比例值进行比较,自动判断是否满足内存带宽性能要求。通过编写简单的脚本,能自动化更改cpu核数及个数进行设定次数的内存性能测试,自动计算出多次测试的平均值并与内存带宽的理论值比较,简单高效,获得稳定的内存性能数据结果。应用程序中或多或少会涉及对数组对象的使用,通过在内存上开辟一段存储空间,应用程序可以对数据进行批量操作,并将处理完成的数据写入磁盘进行保存,以防丢失。使用完毕的数组对象会被系统回收,并释放其占用的内存空间。javaScript/typeScript因为其语言的特性,没有手动释放内存的操作方法,完全依靠运行引擎的垃圾回收机制来防止内存溢出。对于有着大量数组创建和销毁的应用程序,频繁的垃圾回收操作在一定程度上降低了程序性能,影响用户的体验。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种利用数组池优化javaScript/typeScript程序内存性能的方法,以解决上述存在问题。根据本专利技术提供的一种利用数组池优化javaScript/typeScript程序内存性能的方法,所述方案如下:第一方面,提供了一种利用数组池优化javaScript/typeScript程序内存性能的方法,针对javaScript/typeScript动态语言处理类型化数组时,执行包括:数组池建立步骤:预先建立数组池;数组申请步骤:将创建二进制数组的操作改为向数组池申请数组;数组归还步骤:将销毁二进制数组的操作改为向数组池归还数组。优选的,所述数组池包括:内存、Map对象、租借接口、返还接口以及检查策略函数;其中,事先申请的内存为整个程序运行时的数组资源集中地;Map对象用以记录数组资源的使用情况;租借接口、返还接口以及检查策略函数应用于javascript/typescript应用程序中。优选的,所述数组资源的表现形式为ArrayBuffer的二进制数组对象。优选的,所述租借接口包括租借接口函数,所述租借接口函数的函数参数为数组类型和长度;所述租借接口函数还会在数组池内除已租借的数组资源以外,剩余的未租借数组资源不满足申请条件的情况下执行检查策略函数;执行完检查策略函数后的返回值为直接使用的类型化数组。优选的,所述返还接口包括返还接口函数,所述返还接口函数能够与主线程程序并发运行。优选的,创建数组资源存放二进制数据,向数组池申请租借一段长度的类型化数组,具体步骤如下:步骤1.1:与租借接口和返还接口进行接口交互,提供需求的类型化数组长度和具体类型;步骤1.2:判断内存数据块剩余部分是否申请者的需求;步骤1.3:在Map对象中记录当前指针位置和申请的类型化数组长度;步骤1.4:基于这部分内存生成类型化数组,并将指针向后移动至未分配内存的最前端;步骤1.5:将类型化数组资源返回给申请者。优选的,包括数组资源的生命周期结束后,向数组池返还资源,具体步骤如下:步骤2.1:调用接口函数执行返还租借的类型化数组,之后的过程与主线程并发运行;步骤2.2:利用Map对象删除对应的租借记录;步骤2.3:遍历Map对象,找出偏移地址和便宜长度之和最大的记录,将这个值作为当前数组池中已租借和未租借内存资源的分界,将指针移动至分界处。优选的,所述步骤1.2中,当内存数据块剩余部分不满足申请者的需求时,调用检查策略函数执行检查,检查指针前部分是否存在未租借的资源以满足申请者的需求。优选的,遍历排序过的租界记录,计算两个记录之间是否存在满足要求的未分配资源,如果找到了,就将资源分给申请者。与现有技术相比,本专利技术具有如下的有益效果:预先建立数组池,将正常创建和销毁的二进制数组变为向数组池申请数组和归还数组,减少了创建数组时申请内存的系统调用和销毁数组时释放内存的调用,起到优化javaScript/typeScript程序运行时的效果。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为数组池的基本结构;图2为租借数组操作;图3为归还数组操作;图4为一次申请和归还数组的实例。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。本专利技术实施例提供了一种利用数组池优化javaScript/typeScript程序内存性能的方法,参照图1所示,包括数组池,数组池中包含:内存、Map对象、租借接口、返还接口以及检查策略函数;其中,事先申请的内存为整个程序运行时的数组资源集中地;Map对象用以记录数组资源的使用情况;租借接口、返还接口以及检查策略函数主要应用于javascript/typescript应用程序中。本实施例中的数组资源的表现形式为Ar本文档来自技高网...
【技术保护点】
1.一种利用数组池优化javaScript/typeScript程序内存性能的方法,其特征在于,针对javaScript/typeScript动态语言处理类型化数组时,执行包括:/n数组池建立步骤:预先建立数组池;/n数组申请步骤:将创建二进制数组的操作改为向数组池申请数组;/n数组归还步骤:将销毁二进制数组的操作改为向数组池归还数组。/n
【技术特征摘要】
1.一种利用数组池优化javaScript/typeScript程序内存性能的方法,其特征在于,针对javaScript/typeScript动态语言处理类型化数组时,执行包括:
数组池建立步骤:预先建立数组池;
数组申请步骤:将创建二进制数组的操作改为向数组池申请数组;
数组归还步骤:将销毁二进制数组的操作改为向数组池归还数组。
2.据权利要求1所述的利用数组池优化javaScript/typeScript程序内存性能的方法,其特征在于,所述数组池包括:内存、Map对象、租借接口、返还接口以及检查策略函数;
其中,事先申请的内存为整个程序运行时的数组资源集中地;Map对象用以记录数组资源的使用情况;租借接口、返还接口以及检查策略函数应用于javascript/typescript应用程序中。
3.根据权利要求2所述的利用数组池优化javaScript/typeScript程序内存性能的系统,其特征在于,所述数组资源的表现形式为ArrayBuffer的二进制数组对象。
4.根据权利要求2所述的利用数组池优化javaScript/typeScript程序内存性能的系统,其特征在于,所述租借接口包括租借接口函数,所述租借接口函数的函数参数为数组类型和长度;
所述租借接口函数还会在数组池内除已租借的数组资源以外,剩余的未租借数组资源不满足申请条件的情况下执行检查策略函数;执行完检查策略函数后的返回值为直接使用的类型化数组。
5.根据权利要求2所述的利用数组池优化javaScript/typeScript程序内存性能的系统,其特征在于,所述返还接口包括返还接口函数,所述返还接口函数能够与主线程程序并发运行。
【专利技术属性】
技术研发人员:姚建国,张宇燊,
申请(专利权)人:上海交通大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。