本发明涉及优化,具体涉及一种面向dots的结构体优化方法、系统、设备及介质。
背景技术:
::1、在c#中,结构体(struct)是一种值类型,用于存储数据,并且相较于类(class)具有一些特定的优势。具体地,结构体作为值类型,实例通常存储在栈上,并且直接存储方式有更紧凑的内存布局,以及更高效的内存访问。2、在unity最新的面向数据技术栈(data-oriented technology stack,dots)中,结构体作为经常使用的存在;在ecs(entity component system)框架下,通过将数据存储在nativecontainer(托管值类型的)的结构中,再使用job system来并行处理数据,以实现高效的系统。并且组件(component)通常也是以更紧凑、更易于批量处理的结构体的形式存在的。此外,burst compiler编译器的使用,也需要使用非托管类型的数据(unmanaged)才能进行使用。3、当前项目中大量应用结构体,基于结构体的特性,虽然具有许多优点,但是在dots中,由于在栈上分配内存需复制整个结构体的数据,会产生额外的性能和内存消耗,并且在结构体结构越大时越明显。因而,dots中结构体的使用存在资源内存占用率高、性能使用瓶颈问题,严重影响了应用程序的开发效率。技术实现思路1、有鉴于此,本发明提供了一种面向dots的结构体优化方法、系统、设备及介质,以解决现有dots中结构体的资源内存占用率高、存在性能使用瓶颈,进而导致用户体验差,难以满足应用程序高效开发需求的问题。2、第一方面,本发明提供了一种面向dots的结构体优化方法,方法包括:3、在目标结构体定义时,使用blittable类型作为结构体字段的数据类型;4、根据目标结构体中的结构体字段的对应长度进行内存布局优化,包括:5、通过反射获取目标结构体中的所有结构体字段及其长度;6、将所有结构体字段基于其对应长度进行降序排列,并从中筛选结构体字段的最大长度,得到对齐长度;7、对于每一结构体字段,依次判断当前结构体字段的对应长度是否小于对齐长度;8、在当前结构体字段的对应长度小于对齐长度时,计算结构体字段的对应长度与对齐长度的长度偏差;9、基于长度偏差从当前剩余的结构体字段中进行长度匹配;10、在当前剩余的结构体字段的对应长度与长度偏差匹配时,将匹配的结构体字段填充至当前结构体字段。11、本发明在目标结构体定义时使用blittable类型作为结构体字段的数据类型,并根据目标结构体中的结构体字段的对应长度进行内存布局优化,具体将获取得到的目标结构体中的所有结构体字段及其长度用于内存布局的自动优化,通过长度偏差从当前剩余的结构体字段筛选最适合的结构体字段对内存空隙进行填充,不仅可以减少内存偏移和内存补齐导致的内存间隙,还能够得到最合适的结构体字段内存布局,提高了面向dots的结构体优化效率,减少了数据对资源内存的占用,增加了数据内存利用率,优化了数据结构,增强了用户体验,大大满足了应用程序的高效开发需求。12、在一种可选的实施方式中,面向dots的结构体优化方法还包括:13、在当前剩余的所有结构体字段的对应长度均与长度偏差不匹配时,跳过对当前结构体字段的填充,执行判断下一结构体字段的对应长度是否小于对齐长度的步骤,直至当前剩余的所有结构体字段均遍历完成。14、本发明在当前剩余的所有结构体字段的对应长度均与长度偏差不匹配时,跳过对当前结构体字段的填充,能够加快内存布局优化流程,一定程度上提高了面向dots的结构体优化效率,满足了应用程序的高效开发需求。15、在一种可选的实施方式中,面向dots的结构体优化方法还包括:16、通过stackalloc为目标结构体在栈上分配相应内存空间;17、判断是否存在stackalloc栈溢出;18、在存在stackalloc栈溢出时,计算溢出内存容量并将其分配至目标结构体的堆内存空间;19、若不存在stackalloc栈溢出,则分配可重复使用的内存块,并基于内存块对内存空间进行重用访问。20、本发明通过stackalloc为目标结构体直接在栈上分配连续的内存,并考虑到stackalloc栈溢出情况,对stackalloc分配内存容量进行适应性管控,能够防止栈溢出产生的错误导致程序中断的情况发生,同时对内存空间的重用访问,可以节约对栈空间访问的内存大小,进而有助于提高访问速度,增强用户体验。21、在一种可选的实施方式中,面向dots的结构体优化方法还包括:22、引入span<t>对目标结构体通过切片访问方式进行拓展优化,得到对应的数据;其中,拓展优化的内存访问方式包含反转、快速排序和复制中的至少一种。23、本发明引入span<t>对目标结构体进行拓展优化,重构实现了切片访问方式,能够在不复制数组元素的情况下,通过切片方式实现内存0分配情况下直接获取数组对应区间的数据信息,有助于减少数据对内存的占用,增加了数据内存利用率。24、在一种可选的实施方式中,面向dots的结构体优化方法还包括:25、通过指针获取nativecontainer容器中目标结构体在内存地址上的数据;26、对数据设定访问标签后重新封装,得到优化容器;27、通过ref关键字对优化容器进行修饰,或者将优化容器拓展为span<t>以得到对应的结构体数据。28、本发明利用标签和关键字对nativecontainer容器进行优化拓展,首先获取nativecontainer的指针,根据指针指向地址,使用优化容器装载指针指向的内存中对应数据,并利用ref关键字对优化容器进行修饰后,为其添加新的访问指针,以此将关键字包装转化成span<t>,利用span<t>的特性,可以避免nativecontainer容器在访问时的值复制情况,从而增加了内存利用率和访问速度。29、在一种可选的实施方式中,面向dots的结构体优化方法还包括:30、在对目标结构体进行参数传递和/或变量赋值时,基于预设关键字对目标结构体的对应参数和/或变量进行修饰。31、本发明根据引用类型的访问方式结合ref关键字对目标结构体的参数传递和/或变量赋值时进行优化,能够直接在内存地址里对该结构体进行修改,不会产生额外的复制,进而增加了内存利用率。32、第二方面,本发明提供了一种面向dots的结构体优化系统,系统包括:33、第一优化模块,用于在目标结构体定义时,使用blittable类型作为结构体字段的数据类型;34、第二优化模块,用于根据目标结构体中的结构体字段的对应长度进行内存布局优化,包括:35、通过反射获取目标结构体中的所有结构体字段及其长度;36、将所有结构体字段基于其对应长度进行降序排列,并从中筛选结构体字段的最大长度,得到对齐长度;37、对于每一结构体字段,依次判断当前结构体字段的对应长度是否小于对齐长度;38、在当前结构体字段的对应长度小于对齐长度时,计算结构体字段的对应长度与对齐长度的长度偏差;39、基于长度偏差从当前剩余的结构体字段中进行长度匹配;40、在当前剩余的结构体字段的对应长度与长度偏差匹配时,将匹配的结构体字段填充至当前结构体字段。41、本发明的面向dots的结构体优化系统,不仅可以减少内存偏移和内存补齐导致的内存间隙,得到最合适的结构体字段内存布局,还能够提高面向dots的结构体优化效率,减少了数据对内存的占用,增加了数据内存利用率,优化了数据结构,增强了用户体验,一定程度上满足了应用程序的高效开发需求。42、第三方面,本发明提供了一种计算机设备,设备包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的一种面向dots的结构体优化方法。43、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的一种面向dots的结构体优化方法。当前第1页12当前第1页12
技术特征:1.一种面向dots的结构体优化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的面向dots的结构体优化方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的面向dots的结构体优化方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的面向dots的结构体优化方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的面向dots的结构体优化方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的面向dots的结构体优化方法,其特征在于,所述方法还包括:
7.一种面向dots的结构体优化系统,其特征在于,所述系统包括:
8.一种计算机设备,其特征在于,所述设备包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至6中任一项所述的面向dots的结构体优化方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的面向dots的结构体优化方法。
技术总结本发明涉及优化技术领域,公开了一种面向DOTS的结构体优化方法、系统、设备及介质,方法包括:在目标结构体定义时,使用Blittable类型作为结构体字段的数据类型;根据目标结构体中的结构体字段的对应长度进行内存布局优化,具体将获取得到的目标结构体中的所有结构体字段及其长度用于内存布局的自动优化,通过长度偏差从当前剩余的结构体字段筛选最适合的结构体字段对内存空隙进行填充。本发明不仅可减少内存偏移和内存补齐导致的内存间隙,还能得到最合适的结构体内存布局,进而提高结构体优化效率,减少了数据对内存的占用,增加了数据内存利用率,优化了数据结构,增强了用户体验,一定程度上满足了应用程序的高效开发需求。
技术研发人员:楼以渐,王秋洋
受保护的技术使用者:湖南速子文化科技有限公司
技术研发日:技术公布日:2024/11/26