cegui优化

    前段时间抽空做了点cegui的优化,主要是内存消耗相关的。 基于序列化的目的引入的属性集虽然用起来确实很方便,但是也有自己的短板----相当的吃内存。加上cegui的字符串又是那么的庞大....

    基本上一个最普通的Window窗口占用内存在7-8k左右,扩展一点的窗口达到10K很正常了,游戏中随便创建几个几千个小窗口也不足为奇。内存是相当的客观,这些都不算UI资源的占用---- 优化目的所在。

    优化主要集中在属性集这块,这是细分定位出来的内存消耗大头所在,当然也就那它开刀了。优化方式是基于窗口的属性集关联关系移到基于类的属性集关联。这样优化会牵扯到比较多的地方改动,不过这些都是次要的。需要注意的是不要因为这个修改影响到窗口属性序列化功能,因为这是cegui的一个优势所在,同时也影响到布局编辑器的正常工作。

    优化的另外一个地方就是体会了cegui的字符串。原始的cegui字符串支持utf8和utf32编码,使用的是utf8编码,同时存储是以4字节来存储,很耗内存。另外还有一个问题就是针对中文等的编码不正统,了解的人应该明白,这个可能是CE没有考虑或者说测试到位的地方,需要做一些完善,当然这些都不是什么大问题。目前使用了mbcs,直接使用了基于std::basic_string<char>来替换。暂时没有考虑用TCHAR,比较相对于我们的应用来说短期来说是足够了。

    这样优化下来,基本上一个Window下来就占用2K左右了,效果显而易见。对于性能上的优化,分层渲染、引入RTT(需要比较好的规划)都是应该做的,这是大的方面,细节的就不多讲了。

    此外,图片集的动态加载也是内存优化的一个方面。

 

    后续: 关于属性集的优化做了,但是Falagard内部的优化还没有做。其实做优化也是一个折中,很多东西都可以做,只不过在内存 、 运行性能 、 扩展性和灵活性中做抉择罢了。

 

   有小孩了,都没啥事情整自己的东西了,没事也就下下军旗斗斗地主,文章也只是兴趣了才东拼西凑,突然想起小时候写日记,嘿嘿,现在才能体会到那时候人家说写日记也是一种乐趣....

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值