- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近在 MSDN 中注意到 FILE_FLAG_NO_BUFFERING 标志的详细描述,并阅读了几个关于 Windows 中无缓冲 I/O 的 Google 搜索结果。
http://msdn.microsoft.com/en-us/library/aa363858(v=vs.85).aspx
我现在想知道,在文件 I/O 编程中考虑无缓冲选项真的很重要吗?因为许多程序使用普通的旧 C 流 I/O 或 C++ iostream,所以我之前没有注意 FILE_FLAG_NO_BUFFERING 标志。
假设我们正在开发像 Picasa 这样的照片浏览器程序。如果我们实现无缓冲 I/O,缩略图显示速度是否会在普通用户中表现出明显的差异?
最佳答案
哦主不。您可以通过使用该标志使其速度显着变慢。它绕过了文件系统缓存,这是一段美妙的代码,可以以几乎通灵的准确度猜测您在读取 N 后是否想要读取扇区 N+1。如果价格便宜,只需预加载它。
这对写作尤其不利,这就是该选项存在的原因,您不会得到懒惰的回写。这意味着您的程序只能以磁盘写入的速度运行。这是非常非常缓慢的。标志的优点是您可以确定它已被写入。帮助实现事务性磁盘更新,这是 dbase 引擎关心的类型。
但是你自己试试看效果。
关于performance - 使用 FILE_FLAG_NO_BUFFERING 会返回明显的速度增益吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4574996/
正如标题所说,我正在编写一个网络程序,我在其中使用 CreateFile 打开网络驱动程序的句柄,并且我一直在试验 NO_BUFFERING 标志。 大多数文档甚至都不会提及将其与通信设备一起使用,而
最近在 MSDN 中注意到 FILE_FLAG_NO_BUFFERING 标志的详细描述,并阅读了几个关于 Windows 中无缓冲 I/O 的 Google 搜索结果。 http://msdn.mi
我正在使用VB6和Win32 API将数据写入文件,此功能用于导出数据,因此磁盘写入性能是我考虑的关键因素。因此,在调用 CreateFile 打开文件时,我使用 FILE_FLAG_NO_BUFFE
我正在尝试测量 FILE_FLAG_WRITE_THROUGH 和 FILE_FLAG_NO_BUFFERING 对文件写入序列的影响,如 another question 中的请求。但我发现我无法写
我正在使用 Windows ReadFile 函数按顺序读取一个 4GB 的文件,使用 FILE_FLAG_NO_BUFFERING。我使用 64K 的缓冲区,一切正常,但问题是我的数据在当前缓冲区的
我正在 try catch 子进程的输出 (stdout/stderr),特别是如果它异常退出,我可能会得到一些有用的错误输出。 我创建了一个输出文件,并在 STARTF_USESTDHANDLES
考虑这个程序: #include #include int main(int argc, char** argv) { if (argc != 2) return 1; HANDL
一些背景知识:我一直在尝试在对大文件进行 IO 时使用 FILE_FLAG_NO_BUFFERING 标志。我们正在尝试减少缓存管理器的负载,希望通过后台 IO 减少我们的应用程序对用户机器的影响。性
我在使用带有重叠 I/O 的标志 FILE_FLAG_NO_BUFFERING 时观察到一个奇怪的行为。我调用了一系列 ReadFile() 函数调用,稍后使用 GetOverlappedResult
我正在尝试对 NTFS 的文件读取时间(顺序访问)进行基准测试。我的代码获取开始时间,执行大小等于 4096 字节(系统上 NTFS 的簇大小)的读取并记录结束时间。然后存储两个时间之间的差异,并重复
据我所知,然后使用 POSIX O_DIRECT与 open()阻止设备文件的工作方式与组合 FILE_FLAG_WRITE_THROUGH 的工作方式相同和 FILE_FLAG_NO_BUFFERI
大家,我每秒有很多文件写入磁盘,我想禁用磁盘缓存以提高性能,我谷歌搜索找到解决方案:win32 CreateFile 方法与 FILE_FLAG_NO_BUFFERING 和 How to empty
大家,我每秒有很多文件写入磁盘,我想禁用磁盘缓存以提高性能,我谷歌搜索找到解决方案:win32 CreateFile 方法与 FILE_FLAG_NO_BUFFERING 和 How to empty
我是一名优秀的程序员,十分优秀!