• 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。

  • 相关阅读:
    java降序排列
    冒泡排序-java
    redis-并发竞争问题
    超卖问题
    算法-题目汇总-6
    算法-题目汇总-4
    算法-题目汇总-1
    算法-二分查找-1
    算法-bst-平衡搜索二叉树-1
    算法-位运算-1
  • 原文地址:https://www.cnblogs.com/Jaysonhome/p/11597908.html
Copyright © 2020-2023  润新知