【发布时间】:2012-05-01 14:59:24
【问题描述】:
我正在编写一个应用程序来读取和解析大小可能为 1 KB 到 200 MB 的文件。
我要解析两次...
提取文件中包含的图像。
解析该图像以提取图像的内容。
我一般使用文件流、缓冲流、二进制读取器和二进制写入器来读写内容。
现在,我想知道读取文件和提取内容的最快和最有效的方法...
有没有好的方法或者好的类库?
注意:不安全的代码是可以的!
【问题讨论】:
-
这里最大的性能改进将通过一次解析文件获得。这样可以避免您扫描图像两次
-
@Luke 实际上图像包含在块中,并且图像中的一些字节应该在解析之前删除[记录]。
-
是的,就使用 .NET 文件对象而言,就读取文件的原始速度而言,性能差异应该不大。您是否出于某种原因希望对其进行优化?
-
文件读取和写入需要很长时间...一个 81 mb 的文件大约需要 >30-40 秒来读取和提取...所以,我决定对其进行优化,以便文件以更快的方式提取。
-
如果从 80 MB 文件中提取数据需要 40 秒,则文件 I/O 速度不太可能是问题。一些显示您正在做什么的示例代码将非常有帮助。您可以考虑将整个文件读入内存,创建一个
MemoryStream,然后将您的BinaryReader连接到它。然后,您可以分析您的代码并准确查看瓶颈所在。