【问题标题】:What is the most efficient way to read a lot of integers (doubles) from text file in C#?从 C# 中的文本文件中读取大量整数(双精度)的最有效方法是什么?
【发布时间】:2011-12-15 23:50:59
【问题描述】:

如果我必须从文件中读取一个巨大的整数矩阵,那么在 C# 中执行此操作的最有效方法是什么?

例子:

n m // n - number of rows m - number of columns
a11  ... a1m
    ...
an1 ...  anm

【问题讨论】:

  • 到目前为止您尝试过什么,它的表现如何,以及您需要它的执行速度有多快?
  • 就个人而言,如果文件格式一致,为方便起见,我会考虑使用 FileHelpers.Net - filehelpers.com。然而,正如 Jon Skeet 所说,在不了解更多信息的情况下,很难推荐任何东西。
  • 我正在逐行阅读,然后将其拆分并解析。我在想如果我能读到第一个空格并解析我得到的 int,而不是读整行,因为现在我不止一次传递相同的数据。
  • 您可以使用 MemoryMappedFile 而不是标准文件 IO。这确实会有所不同,具体取决于几个因素(文件大小、页面布局等),请参阅dotnetperls.com/memorymappedfile-benchmark

标签: c# optimization matrix double integer


【解决方案1】:

这主要取决于您所说的效率是什么意思,就速度而言,一旦加载到多维数组中并使用它会非常快。

就仅使用您需要的资源而言,逐行流式传输是最好的。

【讨论】:

    【解决方案2】:

    在我看来,从文件中读取整个文本后,您可以使用 Regex 类匹配所有数字(使用 Matches(String) 方法)并检索类 Matches 的对象。 String 形式下的所有数字都存储在该对象中,您可以从这些字符串中解析得到数字。

    【讨论】:

    • -1 for Mike 要求有效的解决方案,在这种情况下使用正则表达式是缓慢且毫无意义的
    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多