当前位置: 首页 > news >正文

高效数据结构 - 循环队列

循环队列在游戏开发中通常叫做CircularBuffer、RingBuffer,常用来做数据缓存,生产者/消费者模型等。

在UE中有内置这样的数据结构,而Unity的.Net库中恰恰没有。

 

为什么说这样的结构高效,以双下标循环队列为例。配个图:

q2

Tail是尾索引,Head是头部索引。当新元素加入循环队列时,Head索引+1并%取模操作

当加入队列的元素释放时(假如用于对象池),交换元素到尾部索引位置,Tail索引+1并%取模操作

 

我们知道Unity里做对象池通常是栈实现,Unity自己的对象池是List实现。

但是这样的方式都有问题,会导致早期加入池的对象长期不会被操作,CPU侧会导致缓存丢失。

而循环队列在高频率使用时,每个元素都会频繁使用,CPU缓存利用率非常高。

 

即使不是双下标,单下标的循环队列也有缓存利用率高效的特点。双下标则可

模拟生产者/消费者模型,用于多线程Job时检查任务是否完成。

 

UE的CircularBuffer用&与运算代替%取模操作,效率还会更高一些。

 

上代码。

public class CircularBuffer<T> where T : class, new()
{public T[] items;private int _head;private int _tail;public CircularBuffer(int capacity){items = new T[capacity];_head = 0;_tail = 0;for (int i = 0; i < capacity; ++i){items[i] = new T();}}public int Get(){var item = items[_head];_head = (_head + 1) % items.Length;return _head;}public void Release(int index){if (!ReferenceEquals(items[_tail], items[index])){Swap(_tail, index);}_tail = (_tail + 1) % items.Length;}private void Swap(int indexA, int indexB){var temp = items[indexA];items[indexA] = items[indexB];items[indexB] = temp;}
}

 

测试:

  • Stack 顺序测试: 845ms
  • CircularBuffer 顺序测试: 798ms
  • Stack 随机释放测试: 2490ms
  • CircularBuffer 随机释放测试: 2325ms

 

http://www.hskmm.com/?act=detail&tid=36590

相关文章:

  • 2025 年国内活塞杆厂家最新推荐排行榜:聚焦精密 / 不锈钢 / 油缸 / 气缸 / 45# 镀铬类产品,助力企业精准挑选可靠合作方
  • Day16
  • 数据类型,二元运算符,自动类型提升规则,关系运算,取余模运算
  • 股票技术面分析平台QuantMatrix深度解析 - 实践
  • 迷宫问题
  • WPF使用MediaCapture开发相机应用(四、相机录视频)
  • 链队
  • Gitee本土化战略深度解析:中国开发者生态的合规与效率革命
  • 2025年10月上海装修公司口碑榜:十强对比评测
  • 02-GPIO-铁头山羊STM32标准库新版笔记
  • 【多校支持、EI检索】第六届大数据与社会科学国际学术会议(ICBDSS 2025)
  • IDC iPaaS市场报告解读:独立厂商与云巨头的“双轨竞速”
  • 2025年10月仓储管理系统推荐:鸿链云仓领衔五大方案对比评测榜
  • 2025年10月电动叉车销售公司排行榜:五家主流服务商对比评测
  • 2025年口罩机厂家权威推荐榜:全自动口罩机器,全自动KN95口罩机源头企业综合评测与采购指南
  • 2025年包装机厂家权威推荐榜单:全自动包装机/包装生产线/非标定制机器与生产线专业选购指南
  • Timing Signoff 技术精要
  • Oracle故障处理:10G RAC srvctl注册实例正常,但是crs切不能管理实例
  • 杂题选做-2
  • 读书笔记:白话解读Oracle范围分区
  • 2025年10月人形机器人场景落地商评测榜:赛飞特工程技术集团数据透视
  • 科林电气与利驰软件续签合作,共启数字化协同新篇章!
  • 详细介绍:资产信息收集与指纹识别:HTTPX联动工具实战指南
  • 易基因:剑桥大学团队利用微量WGBS等揭示DNMT3L在胎盘发育中的DNA甲基化调控机制:CSC(IF20.5)
  • 10.22
  • 和橘子学AI创作【500集120实战】
  • iOS 26 性能调试工具全景指南 多工具组合 + 实战流程
  • 102302134陈蔡裔数据采集第一次作业
  • 2025年10月蒸汽发生器品牌榜:辰能能源领衔五强对比
  • 2025吹塑机厂家权威推荐:鼎浩包装科技实力企业,专业定制高效生产方案