什么是DOTS?

 

(图片为实机测试) 

DOTS全称:(Burst +Job System+Entity Component System) 新型高性能、多线程面向数据的技术堆栈

是由:Brust+Job System + ECS组合而成,是一种面向数据对象的编程体系,在unity中您也可以对他进行封装,在mon中结合面向对象进行使用,用在特定的有性能瓶颈的模块上解决性能问题。

其面向数据对象的编程,就像是掀开了面向对象的脑壳,让程序员直面数据对象进行编程书写代码。

这套系统在ECS中大致在书写起来分文两个模块:组件和数据。您需要在书写中找到数据和组件将他们搭配使用。可能您在一些项目中也使用过类似方案,所以上的手难度将会很低。

Burst:是unity的一个编译器技术,用于在运行时编译C#代码成Native代码,以提高性能,它是基于LLVM技术的,并使用了SIMD指令来加速数学和向量操作,故此建议您在使用相关技术时请导入SIMD数学库搭配使用。

特点: 通过利用SIMD指令和多线程技术来优化代码,从而实现更快的执行速度;

            会对代码进行静态分析,从而优化内存使用;

             可以轻松地与Unity和C#代码集成,而无需复杂的配置或更改;

              多平台支持;

Job System:unity多线程接口,他是一种高并发的多线程模式,您在使用时无需关心线程锁问题,造成的数据访问冲突或混乱,这是因为job工作线程组会自动分配好这一切,且会复制原来的数据进行计算以确保线程安全。

ARM工程师在设计这一线程工作组时已经做好了“数据分割”(或许这一说法并不准确)的操作,确保使用者能够安全使用它,并确保这一切是正常的(具体请访问:YouTobe unity)

特点:这是unity目前开放的唯一一个允许用户可以使用的多线程技术;(之前用的基本上是基于.NET的多线程)

            高并发、速度极快、数据极为安全、几乎不会对主线程造成影响(它不允许你随意自由的修改,当然也造成了数据不好取出等问题,必须使用Native才能够正确的取出数据);

ECS:Entity Component System Unity实体组件系统,最大限度降低数据关联性,实现超高的“高内聚,低耦合”特性,极大的提升CPU运行效率,最大限度提升了CPU命中率,使得数据排列极为整齐。

        特点:数据分离,耦合性低(没有父类包袱问题,数据对象极为单纯);

                    极大提高CPU命中率;

                    可以生成海量对象;

截至目前为止ECS虽然已经进入正式阶段,但介于许多模块还未完全开发完成,因此在正式项目工程中并不建议使用此功能(对于一般开发项目组而言)。

但非常建议尝试使用前两个模块Burst+Job System系统,目前它已足够成熟,有不少已经发行的项目使用了他们,而且在unity2019unity就已经将他们放入其中了。

相信在不久的将来ECS系统将会正式进入大家的开发视野中,用它打造更好的游戏!      

猜你喜欢

转载自blog.csdn.net/qq_46043095/article/details/132013511