- 精华
- 0
- 帖子
- 13
- 威望
- 0 点
- 积分
- 13 点
- 种子
- 0 点
- 注册时间
- 2008-11-17
- 最后登录
- 2009-4-29
|

楼主 |
发表于 2008-11-18 16:12 · 美国
|
显示全部楼层
下面是引用manilion于2008-11-18 14:07发表的:
这么点事还整伪代码, lz真是懂技术啊. 我们不知道在ms的中国的几个部门有没有搞xo的, 我们也不知道xo项目组在ms里的地位低还是不低, 但是你lz说了半天跟事实完全不符啊, 你以为大家那么好忽悠么?
这段代码应该出现在游戏代码里么, 你让人家游戏开发人员来处理怎么读数据, 怎么写cache么? xo的cache够一张d9的容量, 连替换策略都不需要, 所以根本没理由让游戏开发人员控制这个, 让主机自己控制读数据,写cache就完全可以了. lz还是洗洗睡吧, ms的做开发的人可没有这么闲的.
首先我不是ms中国的人。ms atc据我所知没有参与xo项目。
其次,我只能说,你的逻辑思维能力太差了,想问题的时候还是该多动动脑子,脑袋不用会退化的。
当然有必要让用户来控制cache的读写,这个道理是如此的简单:
(1)不是所有的数据都应该放入硬盘cache中,最典型的,比如游戏的过场动画。你把它cache起来干什么?在把光盘数据读入内存的同时,往硬盘cache里面写数据,是需要占用额外的系统资源的。不要白白把系统资源浪费在一些很傻的行为上。
(2)由用户控制cache的读写能带来更大的灵活性。举个例子,一些游戏的贴图质材是以压缩格式放在光盘上的,在载入内存时需要在内存中解压,游戏编写者完全可以把质材解压以后再写入硬盘cache中,这样下次从硬盘cache中读取时就可以不用重新解压了。对于某些频繁使用的质材,能带来可观的性能提升。
(3)让用户控制cache有助于提升关键事务性能。很显然,在读光盘的时候即时写入硬盘cache,会给系统带来一定的负担,不是任何时候都适宜这样做。如果你能意识到读光盘和写入硬盘cache都是很消耗系统资源的行为,最聪明的做法就是不要同时干这两件事。类似于操作系统的写时复制(Copy-On-Write),为什么我们不等待用户空闲的时候,甚至是用户决定要销毁该资源的时候再cache它?一个如此简单的道理是,如果用户还没有从内存中销毁一个资源,那我们没有任何必要去cache它——因为用户可以从内存中直接访问它而不用读硬盘和光盘。当用户从内存中销毁一个资源时,这意味着用户想访问它就要重新去读光盘或硬盘,也许这才是恰当的时机把该资源cache到硬盘中去?不是么?
很显然,以上的种种优化,如果没有程序员的参与是不可能的,所以把读写cache的api交给游戏编写者,是个很恰当的设计。明白了么? |
|