许多应用程序,主要是视频游戏(主要是持续内容流式传输的应用程序),采用的方法是拥有一个包含许多游戏资产的大包文件,这些文件可以[可以说]用于安全和空间效率的原因,但也许还有性能原因?
假定一个应用程序在辅助流线程中使用异步I / O每5秒加载3个以上资产文件,如果通过查找和读取I / O在单个大文件上执行,技术上会更快吗?必要时资产的各种偏移或分别读取每个文件分布在操作系统文件系统中?
HDD,SDD和其他因素可能会有所不同,那些是什么?
假设文件没有碎片(即在安装过程中为有效编写内容之前应用了预留空间),但是指定对结果碎片的影响也很有趣。
文件系统方法上传播的文件似乎对快速生成和修改支持很有意义,但如果性能下降,应该小心。
此问题纯粹是理论和好奇心。
答案 0 :(得分:1)
创建文件句柄/描述符需要安全验证和文件系统元数据操作。可以说,许多小文件操作将比一个操作一个大文件慢。在代码的特定上下文中是否存在可衡量的差异,仍有待证明。
BTW真正的异步IO应该不需要' secondary'线程。您可能会描述在不同的线程上执行的同步IO,这是一个完全不同的野兽。
实现高吞吐量IO是特定于平台的。为了说明,针对Windows特定的阅读Designing Applications for High Performance - Part 1,Part 2和Part 3。