面向数据编程

面向对象编程层层抽象造成臃肿,导致运行效率降低,而这是性能要求高的游戏编程领域不想看到的。

面向过程:建立解决问题所需的各个步骤(函数)。
面向对象:建立解决问题所需的各个模型(类)。
面向数据:考虑数据的存取及布局(数据)。
值得一说的是,面向过程面向对象都是解决问题的一种方法,而面向数据只是一种优化的设计思想,而非解决问题的方法。

冷数据/热数据分割

我们希望CPU缓存存储的是经常使用的数据,而不是那些少用的数据。这就引入了冷数据/热数据分割的概念了。

热数据:经常要操作使用的数据,我们一般可以直接作为可直接访问的成员变量。

冷数据:比较少用的数据,我们一般以引用/指针来间接访问(即存储的是指针或者引用)。

一个例子:对于人类来说,生命值位置速度都是经常需要操作的变量,是热数据。
而掉落物对象只有人类死亡的时候才需要用到,所以是冷数据;

频繁调用的函数尽可能不要做成虚函数

C++的虚函数机制,简单来说是两次地址跳转的函数调用,这对CPU缓存十分不友好,往往命中失败。实

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值