zoukankan      html  css  js  c++  java
  • Unity-ECS(一)浅谈CPU缓存命中和Unity面向数据技术栈(DOTS)--笔记

    一,缓存类型

      概念:局部性。 

      时间局部性:当前用到的一个存储器位置,不久的将来会被用到。

      空间局部性:当前用到的一个存储器位置,附近的位置会被用到。 

    那么在CPU的层面,这两个局部性的特性就会被Cache执行,即将对拥有良好局部性的位置和指令进行缓存。来看一个具有时间局部性的例子:

    这是一个简单的求数组和的函数,这里的sum和i都具有时间局部性。那么它们就会被Cache管理,被CPU取值命中。

    再看一个空间局部性的例子,我们将这个一维数组改为二维。

    我们知道一个二维数组在内存里的排列是按行顺序排列的,大概是这样:
    ay[0,0], ay[0,1], ay[0,2],ay[1,0], ay[1,1], ay[1,2]……

    SumCache的写法会完全命中ay在内存里的排布,而SumMiss的写法则会Miss,二者的函数执行效率差距几十倍。

    所以ECS的架构,就是对缓存命中最大的提升,也是ECS性能倍增的原因。下一节稍微讲一下Unity日后主推的面对数据栈技术编程即DOTS。

  • 相关阅读:
    php单例设计模式
    js实用技巧
    快速排序java实现
    PHP大小写问题
    http转https
    wx-charts 微信小程序图表插件
    如何判断微信内置浏览器 MicroMessenger
    小程序:下拉加载更多时bindscrolltolower多次执行
    PHP内核
    CSS的4种引入方式以及优先级
  • 原文地址:https://www.cnblogs.com/Jaysonhome/p/11597908.html
Copyright © 2011-2022 走看看