美文网首页
Data Locality (数据的局部性)

Data Locality (数据的局部性)

作者: 珏_Gray | 来源:发表于2018-10-30 10:49 被阅读0次

    参考资料:http://gameprogrammingpatterns.com/data-locality.html

    Motivation


    数据的读取速度远落后于数据的处理速度。程序的性能不仅仅取决于算法,更取决于数据的存储(减少cache miss)。


    硬件进展
    缓存示意图

    Pattern


    现代计算机使用多级缓存(cache)结构。为了充分利用缓存的快速读取数据能力,应使处理的数据在内存中连续排布。

    Warning


    这是一种面向数据编程技术,与普遍使用的面向对象技术不同,要转换编程思维。通常情况,使用这种模式会减少抽象,增加程序复杂程度(?争议的论断)。

    Methods


    1.使用数组

    将要遍历处理的数据放在数组当中。

    2.对数组排序

    若数组中存在需要跳过的不活跃对象,则遍历前应该对数组排序。目的是使待处理的对象在内存中连续排布。

    3.Hot/Cold Splitting(冷热分离)

    逐帧遍历对象时,需要使用的数据,应该在内存中连续排布。不使用的数据可以使用指针或引用,减小在缓存线中存储的占用,如果使用ECS,甚至可以不占用缓存存储,因为只遍历关心的组件。

    相关文章

      网友评论

          本文标题:Data Locality (数据的局部性)

          本文链接:https://www.haomeiwen.com/subject/hrwwtqtx.html