性能优化-对象池

作者: 齊葩 | 来源:发表于2017-01-17 22:36 被阅读75次

举一个例子,有一个场景里有一堆怪物,你需要把这堆怪物保持在一定数量区间内(15-20)来供玩家攻击。每隔几秒生成一个怪物但不能超过20个,如果少于15个则立即生成。

有些人可能缺怪物的时候就new一个,怪物被打死的时候就直接delete掉。这就导致了频繁的申请和释放内存,这样做的效率是很低的。

高效的解决方案就是创建一个怪物的对象池。因为对象池会保存你创建出来的对象并且重复使用它,上述例子里如果使用对象池最多只会new20次,并且不会delete。效率自然就上去了。

下面介绍一下对象池。

1:对象池一般有会两个链表。一个是idle链表,一个是busy链表(就是创建一个类,里面有两个链表)。

2:对外的接口一般有取出对象和回收对象两个。

3:当你调用取出接口的时候,对象池会从idle里面拿出来一个返回给你并且把这个对象从idle里面删除掉添加到busy里。如果对象池发现idle是空的,对象池就会创建一个对象。然后把对象反给你并且把对象添加到busy里。

4:当你调用回收接口的时候(注意把你要回收的对象传进去),对象池会把要回收的对象放到idle里并且从busy里移除掉。

这就是简单的对象池。看上去是不是很简单?但是你要重置对象池里对象的数据还是很难控制的。

点击这里可以看到作者的其他文章

欢迎转载,转载请标明出处

相关文章

  • 性能优化-对象池

    举一个例子,有一个场景里有一堆怪物,你需要把这堆怪物保持在一定数量区间内(15-20)来供玩家攻击。每隔几秒生成一...

  • 对象池优化内存

    对象池优化内存 1. 对象池优化是游戏开发中非常重要的优化方式,也是影响游戏性能的重要因素之一2. 游戏中有许多对...

  • Cocos Creator 性能优化——对象池

    ​对于游戏开发人员来说,性能优化是一个永远绕不过的话题,极致的性能是我们毕生的追求,今天就来带大家学习一下性能优化...

  • 性能优化与面向对象

    一、性能优化 1、网络性能 a、网络性能优化 2、执行性能 二、面向对象(OOP) 1、对象由什么组成? 2、创建...

  • Java基础-优化

    网站性能优化 前端性能优化 应用服务器性能优化 解决线程安全的方法: 将对象设计成无状态对象,如Servlet 使...

  • 2017.11.10性能优化

    性能优化 1 稳定 2 扩展 3 性能 1 网络性能 2 执行性能 网络性能 网络性能优化 面向对象的...

  • 池化技术

    池化技术 什么是池化技术 将对象放入池子,使用时从池中取,用完之后交给池子管理。通过优化资源分配的效率,达到性能的...

  • Android 性能优化系列 - 03 使用对象池优化内存

    一. 概述 有时候 UI 卡顿是因为发生了频繁的 GC 造成的,频繁的 GC 其实对应的内存情况就是内存抖动,而发...

  • iOS 保持界面流畅的技巧(读后感)

    原帖地址优化点:1、对象创建能使用轻量级的对象就不需要使用高级的,可以优化性能。CALayer比UIView性能好...

  • 0 - 怎么做服务的高性能

    服务高性能 服务的性能优化,永远离不开以下几个点: 空间换时间 同步换异步 数据结构和算法 并发 池化 优化IO ...

网友评论

    本文标题:性能优化-对象池

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