找回密码
 点一下
查看: 2856|回复: 10

请教一个大量GameCache存取效率的问题

[复制链接]
发表于 2007-12-5 06:05:16 | 显示全部楼层 |阅读模式
我对GameCache的理解是这样的
GameCache在游戏中完全存在内存中
那个文件名"xxx.W3V"实际上只是MissionKey之前的一个Key...
我现在很想知道
如果有大量的数据要存储
把所有数据全部存在同一个文件的不同MissionKey中

把数据分开,分别存在不同文件的MissionKey中

这两种方式对GameCache存取效率的影响有什么不同?

另外我想知道这个GameCache的极限是多少呢?
一个文件里能有多少个MissionKey?
一个MissionKey又能有多少个Key?

多谢!
发表于 2007-12-5 11:57:26 | 显示全部楼层
不是在内存中,应该在硬盘上的.
(在IO上讲,缓存可能是全缓冲的)
xxx.w3v这样的缓存,最多可以创建100个.   里面可以放多少个标签,多个数据,现在还没有测试出上限.
(这类东西在save文件夹里呢.那个文件我不知道如何解密,看上去有些难度)
这类东西也有一个好外,就是可以设计出一个这样的游戏,玩着玩着,不爽了,可以保存进度,之后把save文件夹下的那个文件带走,下次可以从里面读出数据,接着玩.          不过,涉及到同步的问题了,处理上就有点难度了.    比如,某一个玩家,玩的时候保存了一个10级大法师.     下一次,他和别人一起玩,那些人都没有保存过游戏,只有他自己保存了,那么,这种数据只有他自己有,如何读取是一个问题.)
回复

使用道具 举报

发表于 2007-12-5 12:05:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-12-5 12:06:26 | 显示全部楼层
反正storeXX函数很慢很慢。。
回复

使用道具 举报

发表于 2007-12-5 12:15:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2007-12-5 12:30:09 | 显示全部楼层
首先谢谢楼上几位的回答..

我现在又有了新的疑问...
我做了一张测试图测试多人游戏的时候的GameCache,发现无论运行时或者退出后Save文件夹内没有多出任何一个文件(我在运行魔兽前把整个Save全删除了),那么这是不是说明,多人游戏时的GameCache和单人游戏时不同,是保存在内存中的呢?


谢谢!
回复

使用道具 举报

发表于 2007-12-5 12:31:54 | 显示全部楼层
都在硬盘上哪,并不是多出来文件,而是把原来的那个文件扩大了而己.
很可能被放在一个压缩包里了,我们看不出多了一个文件,但实际上是多了的.
回复

使用道具 举报

发表于 2007-12-5 12:39:43 | 显示全部楼层
好像文件名字也有限制,我以前试过用某个文件名字就不能正常读写数据,检查了老半天都不知道什么原因,结果把名字改了居然好了。那个特殊名字忘了,好像是专门留给Blizzard的标准战役用的。
回复

使用道具 举报

发表于 2007-12-5 12:42:33 | 显示全部楼层
不是我夸大啊。。你那缓存做个仇恨系统看看就知道了,遍历次数一多,插入数据的时候就会出问题
回复

使用道具 举报

发表于 2007-12-5 12:49:11 | 显示全部楼层
如果能用内存,为什么要用硬盘做的虚拟内存呢
回复

使用道具 举报

发表于 2007-12-5 15:07:47 | 显示全部楼层
缓存的临时镜像在你“保存”之前都会呆在你的内存里面(所以GetStoredXXX速度很快),但是再快的全局变量也不如本地变量的操作速度快(这个可能和操作系统原理有关系把)。

有个缺点就是StoreXX的操作会去缓冲区找你的数据并且修改掉,所以这个操作会慢的出奇。

------------------------------------

推荐的做法是:用全局变量保存数据,用缓存保存那些永远也不要“存储”的静态供读取的数据(缓存用着比较方便)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-17 12:59 , Processed in 0.030665 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表