在我的应用程序中,我需要在大文件中大约每50毫秒(大约2-7 GB)连续写入数据块(大约2MB)。这是以顺序循环方式完成的,所以我将chunk写入文件后,当我在文件末尾时,我会在开头再次开始。
目前我正在按如下方式进行:
在C#中,我打电话File.OpenWrite
一次打开具有读取权限的文件,并使用SetLength
设置文件的大小。当我需要编写一个块时,我将安全文件句柄传递给非托管WriteFile
(kernel32.dll)。因此,我传递一个重叠结构来指定文件中必须写入块的位置。我需要编写的块存储在非托管内存中,所以我有一个IntPtr
我可以传递给WriteFile
。
现在我想知道是否以及如何使这个过程更有效率。有什么想法吗?
一些问题详细说明:
答案 0 :(得分:2)
使用更好的硬件可能是提高文件写入效率的最具成本效益的方法。 微软研究中的一篇论文将回答您的大多数问题:Sequential File Programming Patterns and Performance with .NET和downloadable source code (C#),如果您想从机器上的纸张中运行测试。
简而言之:
social.msdn上的这个帖子也可能有用。