如何提高游戏后台数据查找效率
2013-05-04 00:25
344 查看
在游戏后台中,内存的数据查找是一个很重要,也是关系到我们游戏的后台效率的问题。
在大量的数据中,我们如何让我们的的程序能够快速的查找到我们所想要的数据呢。那么我们就要使用相应的算法了。
首先,我们所有使用的内存都是通过分配内存的方式,基本上都是共享内存。通过shmid来分配内存。
那么游戏中有哪些数据呢。
1.配置表数据,这个数据是程序启动的时候,就要加载到内存中,我们就使用了二分法,将这些数据放到相应的二维数组中,这些内存都是使用二分法进行有序排列。
在查找的时候,其效率是logN,也就是基本符合了我们的要求。
2.运行时数据,这个就要使用了各种方法来加速我们的快速查找了。当一个心的用户登录到我们的服务器,我们会现在内存池中进行内存的分配工作,然后记录玩家内存池的索引,和内存ID
然后,我们在讲根据内存的数组索引,进行对玩家的名字还有内存id等进行hash存储。因此,当我们要查找一个玩家的时候,我们先通过其hash查找,然后得到其内存池索引,直接通过
数组下标,取得玩家的数据,效率非常的高效。
3.地图数据。地图数据分配在内存池等等,我们还是用了nginx页内存的分配策略。加速了内存的的使用。
因此,根据不同的情况,达到我们高效率的内存数据查找,是至关重要的。
在大量的数据中,我们如何让我们的的程序能够快速的查找到我们所想要的数据呢。那么我们就要使用相应的算法了。
首先,我们所有使用的内存都是通过分配内存的方式,基本上都是共享内存。通过shmid来分配内存。
那么游戏中有哪些数据呢。
1.配置表数据,这个数据是程序启动的时候,就要加载到内存中,我们就使用了二分法,将这些数据放到相应的二维数组中,这些内存都是使用二分法进行有序排列。
在查找的时候,其效率是logN,也就是基本符合了我们的要求。
2.运行时数据,这个就要使用了各种方法来加速我们的快速查找了。当一个心的用户登录到我们的服务器,我们会现在内存池中进行内存的分配工作,然后记录玩家内存池的索引,和内存ID
然后,我们在讲根据内存的数组索引,进行对玩家的名字还有内存id等进行hash存储。因此,当我们要查找一个玩家的时候,我们先通过其hash查找,然后得到其内存池索引,直接通过
数组下标,取得玩家的数据,效率非常的高效。
3.地图数据。地图数据分配在内存池等等,我们还是用了nginx页内存的分配策略。加速了内存的的使用。
因此,根据不同的情况,达到我们高效率的内存数据查找,是至关重要的。
相关文章推荐
- ListView&RecycleView加载大量数据的时候如何提高效率
- 如何提高insert大批量数据的效率
- 如何从优化SQL入手提高数据仓库的ETL效率(转载)
- 如何从优化SQL入手提高数据仓库的ETL效率
- 从如何优化SQL入手,提高数据仓库的ETL效率
- 详述如何提高MySQL中数据装载效率
- 如何从优化SQL入手提高数据仓库的ETL效率
- 如何从优化SQL入手提高数据仓库的ETL效率(转载)
- 如何从优化SQL入手提高数据仓库的ETL效率
- 如何提高ORACLE大数据表Update效率
- 如何从优化SQL入手提高数据仓库的ETL效率(转载)
- 游戏测试员攻略:如何提高测试工作的效率?
- 如何从优化SQL入手提高数据仓库的ETL效率(转载)
- CocoaChina线下沙龙上海站嘉宾分享:淘米手套游戏CTO潘辉《如何提高手游开发的效率》
- android中的ListView数据量大时如何提高效率。。。。
- 如何从优化SQL入手提高数据仓库的ETL效率
- android中的ListView数据量大时如何提高效率。。。。
- 谈如何提高从数据库中读写二进制数据的效率并节省资源
- android中的ListView数据量大时如何提高效率。。。。