关于大量资源文件加载的疑惑

Golden_Shadow 2013-05-15 10:29:37
目前在做一款游戏,windows平台.
游戏中的资源众多,关于资源加载已经做好.每个资源都是一个文件,加载一个场景的时候加载的文件众多,整个过程速度很慢.于是我想将所有文件做成一个大文件,同时记录每个资源的偏移,这样文件数就少了.
我对windows操作系统了解不多,不清楚这么做节省时间节省在哪里.文件句柄数少了?硬盘IO?文件打开关闭等调用次数少了?
我认为我的做法能节省下时间,但却说不出都节省在哪了,在网上查也没查到想要的,故来这里发帖,坐等大牛指点迷津!
...全文
125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
"从文件分配表寻找硬盘对应的位置"这个方面似乎没有节省到时间.无论是分成多个文件做还是放到一个文件里做来加载文件没区别,是吗? ---------------------------- 是有区别的。 单独访问多个文件的方式慢。访问一个总文件,在文件内部寻址的速度快。 百十来个文件的时候区别不大。但几百上千的时候很明显。
Golden_Shadow 2013-05-15
  • 打赏
  • 举报
回复
引用 3 楼 zjq9931 的回复:
加载一个场景的时候加载的文件众多,整个过程速度很慢.于是我想将所有文件做成一个大文件,同时记录每个资源的偏移,这样文件数就少了. -------------------- 这里不是说一次会加载很多吗? 加载一个文件,与加载多个文件的区别是:访问文件时,从文件分配表寻找硬盘对应的位置所花费的时间。 我所知道的就这些。。。 百以内的应当差不不是很大,如果上千,差别就比较明显了。
抱歉,我没描述清楚. 游戏开始时打开一个文件,遇到需要加载资源的时候,调整BaseStream偏移,读取这个文件中的指定长度以完成加载文件. 这样的操作会很多,短时间内会很密集.这在"从文件分配表寻找硬盘对应的位置"这个方面似乎没有节省到时间.无论是分成多个文件做还是放到一个文件里做来加载文件没区别,是吗? 我发现我说话好绕啊...
derekrose 2013-05-15
  • 打赏
  • 举报
回复
减少寻道时间??
  • 打赏
  • 举报
回复
加载一个场景的时候加载的文件众多,整个过程速度很慢.于是我想将所有文件做成一个大文件,同时记录每个资源的偏移,这样文件数就少了. -------------------- 这里不是说一次会加载很多吗? 加载一个文件,与加载多个文件的区别是:访问文件时,从文件分配表寻找硬盘对应的位置所花费的时间。 我所知道的就这些。。。 百以内的应当差不不是很大,如果上千,差别就比较明显了。
Golden_Shadow 2013-05-15
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
如果是加载到内存中,会实现DMA传输,不占用CPU多少时间。
问题是加载的过程会占用很长的时间,游戏资源是增量的也不适合一次性都加载到内存中,那是个下下策.
  • 打赏
  • 举报
回复
如果是加载到内存中,会实现DMA传输,不占用CPU多少时间。
Golden_Shadow 2013-05-15
  • 打赏
  • 举报
回复
引用 6 楼 zjq9931 的回复:
"从文件分配表寻找硬盘对应的位置"这个方面似乎没有节省到时间.无论是分成多个文件做还是放到一个文件里做来加载文件没区别,是吗? ---------------------------- 是有区别的。 单独访问多个文件的方式慢。访问一个总文件,在文件内部寻址的速度快。 百十来个文件的时候区别不大。但几百上千的时候很明显。
明白了!谢谢你!

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧