什么是DOTS?

news2024/11/18 14:01:05

 

(图片为实机测试) 

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系统将会正式进入大家的开发视野中,用它打造更好的游戏!      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/813818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习-Gradient Descent

机器学习(Gradient Descent) videopptblog 梯度下降(Gradient Descent) optimization problem: 损失函数最小化 假设本模型有两个参数𝜃1和𝜃2,随机取得初始值 求解偏微分,梯度下降对参数进行更新 Visualize: 确定梯度方向&…

学习使用axios,绑定动态数据

目录 axios特性 案例一:通过axios获取笑话 案例二:调用城市天气api接口数据实现天气查询案例 axios特性 支持 Promise API 拦截请求和响应(可以在请求前及响应前做某些操作,例如,在请求前想要在这个请求头中加一些…

leetcode 1372. 二叉树中的最长交错路径

给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。 改变前进方向&a…

IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config

现象: IIS创建不了网站,IIS配置没有发生改变 原因: 服务器C盘无空间,释放空间后问题解决。

Java-day03(程序流程控制)

程序流程控制 1.顺序结构 程序从上至下逐行执行,无判断与跳转 public class Test1{ public static void main(String[] args){int i 1;int j i 1; System.out.println(j);} }2.分支结构 依据条件,选择性执行某段语句 主要有以下两种 2.1 i…

计算机毕设 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长…

VSCode搭建GCC环境

1. 下载 https://www.mingw-w64.org/downloads/ https://github.com/niXman/mingw-builds-binaries/releases 2.安装 x86_64-12.2.0-release-win32-seh-rt_v10-rev1.7z解压到D盘 我的电脑–属性–系统属性–环境变量–系统变量–path D:\MinGW-w64\x86_64-12.2.0-release…

用html+javascript打造公文一键排版系统10:单一附件说明排版

如果公文有附件,一般会在公文正文下作附件说明。 一、附件说明的格式 一般为: 公文如有附件,在正文下空一行左空二字编排"附件"二字,后标全角冒号和附件名称。如有多个附件,使用阿拉伯数字标注附件顺序号&…

OSI 7层模型 TCP/IP四层模型 5层模型都是什么,作用是什么【每层的协议没整理完】

7层模型 && 4层TCP/IP 模型对照关系 7层&&5层&&4层模型对照: 我们的教科书为了更好地表示数据包在网络传输上的封装和解封装,抽象出了5层模型 7层模型: 各层的用途: 应用层:为计算机上用户提…

Qt 2. QSerialPortInfo显示串口信息

在ex2.pro 添加&#xff1a; QT serialport//main.cpp #include "ex2.h" #include <QtSerialPort/QtSerialPort> #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Ex2 w;w.show();QList<QSerialPortInfo>…

(二)利用Streamlit创建第一个app——单页面、多页面

1 单页面app Step1&#xff1a;创建一个新的Python脚本。我们称之为uber_pickups.py。 Step2&#xff1a;在您喜爱的IDE或文本编辑器中打开uber_pickups.py&#xff0c;然后添加以下行&#xff1a; import streamlit as st import pandas as pd import numpy as npStep3&…

计算机视觉(五)深度学习基础

文章目录 深度学习基础卷积神经网络与传统神经网络区别深度学习与神经网络的区别 目标函数选择合适的目标函数Softmax层 改进的梯度下降梯度消失的直观解释激活函数学习步长SGD的问题Momentum动量Nesterov MomentumAdagradRMSpropAdam 各种梯度下降算法比较关于算法选择的建议B…

1、Hadoop3.x 从入门到放弃,第一章:概念

Hadoop3.x从入门到放弃&#xff0c;第一章&#xff1a;概念 一、什么是大数据 1、主要解决什么 大数据主要解决&#xff1a;海量数据的“采集”、“存储” 和 "分析计算" 问题2、大数据特点 1> Volume 大量 2> velocity 高速 3> variety 多样性数据分为…

高通死机分析-工具

为了方便高通稳定性领域分析9008以及死机问题&#xff0c;特此写此工具&#xff0c;方便大家分析死机问题&#xff0c;此工具还待完善&#xff0c;后续将发布&#xff0c;有兴趣请联系2251858097qq.com

matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

【C#教程】零基础从入门到精通

今天给大家分享一套零基础从入门到精通&#xff1a;.NetCore/C#视频教程&#xff1b;这是2022年最新整理的、590G的开发教程资料。课程涵盖了.Net各方面的知识&#xff0c;跟着这个教程学习&#xff0c;就足够了。 课程分类 1、C#从基础到精通教程&#xff1b; 2、Winform从…

6.生成随机数、猜数字游戏(rand函数、srand函数、time函数)

猜数字游戏 1.生成随机数1.1 rand函数1.2 srand函数1.3 time函数1.4 设置随机数的范围 2.猜数字游戏 1.生成随机数 1.1 rand函数 函数原型如下&#xff1a; int rand(void); 所需头文件&#xff1a;stdlib.h 作用&#xff1a;调用后随机返回一个伪随机数&#xff0c;随机数范…

QtXlsx: no such file or directory

Qt项目&#xff0c;引用了QtXlsx&#xff0c;准备运行&#xff0c;提示报错&#xff1a; QtXlsx: No such file or directory 奇怪。按理说&#xff0c;安装QtXlsx的三个步骤都已经执行成功了&#xff1a; qmake make make install 把生成的so库文件拷贝到相关目录也是无效。…

解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo

&#x1f600;前言 解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#x…

c++ 的reinterpret_cast 与const_cast 类型转换举例

&#xff08;1&#xff09;const_cast 转换&#xff0c;可以使得给常量赋值。reinterpret_cast 转换&#xff0c;可以把一种类型转换为无关的另一种类型。 图中给出了一个例子。成功给指针 p 写进去了内容。先去除指针p 的常量属性&#xff0c;再把p这个变量当成 B 类型的变量…