c – 为什么Windows在第一次打开文件时这么慢,并且有更快的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – 为什么Windows在第一次打开文件时这么慢,并且有更快的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1276字,纯文字阅读大概需要2分钟。
内容图文
这是Windows 7,64位,Professional使用
考虑一个非常简单的循环
for (i = 0; i < names->size(); i++)
{
std::string Name = names->at(i);
HANDLE fileHandle = CreateFile(Name.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (fileHandle == INVALID_HANDLE_VALUE)
{
throw "Failed";
}
CloseHandle(fileHandle);
}
如果我在一个包含863个文件的目录上运行它,它需要略多于22个SECONDS或25毫秒/文件.下次169毫秒或0.19毫秒/文件.如果我只是在新目录上使用find_file时间非常快,大约0.2毫秒/文件.虽然我在这里使用了CreateFile,但其他方法会产生相同的结果.
当然答案是文件缓存:windows必须缓存有关文件打开的信息.此外,它必须是磁盘访问,就像目录在SSD上一样,第一次和第二次打开大致相同.
现在这些硬盘上的寻道时间只有9毫秒,所以有人知道什么是WINDOWS在打开/关闭文件时只需要25毫秒才能读取NO读数.但更重要的是,是否有可能加快速度.您可能会说25毫秒速度很快,但我正在播放视频文件,所以我需要在大约33毫秒读取数据并且实际读取的数据在30毫秒范围内,因此打开成本太高.
有关如何快速打开**文件的任何建议将不胜感激.
解决方法:
打开文件时,Windows会做很多事情.我不是专家,但我可以提到文件系统维护(更新访问时间,日记等)和访问权限检查作为两个重要项目.不幸的是,我认为你不能更快地做到这一点.
当然,如果您不打算从文件中读取任何内容,并且只是检查文件是否存在或者读取某些元数据(如修改时间),则可以通过更快的方式在不打开文件的情况下执行此操作.
内容总结
以上是互联网集市为您收集整理的c – 为什么Windows在第一次打开文件时这么慢,并且有更快的方法全部内容,希望文章能够帮你解决c – 为什么Windows在第一次打开文件时这么慢,并且有更快的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。