使用文件中的数据初始化List <string>的最快方法

时间:2017-11-29 09:43:29

标签: c# parsing unity3d

我正在尝试使用文件中的一些数据初始化List<string>。该文件是由回车符分隔的单词列表,所以目前我在做

var wordList = new List<string>(textFromFile.Split( new[] {"\r\n", "\r", "\n"}, StringSplitOptions.None ) )

但是对于我正在处理的文本文件的大小(其中一个文件中有172,888行!)这非常慢。有一个更好的方法吗?文本文件不必像当前那样进行格式化,如果有更好的存储数据方法,我可以解析它并以不同的格式写出来。在C ++中我会考虑二进制数据和memcopy,但我不认为在C#中有类似的解决方案吗?

如果相关,则代码在Unity应用程序中,因此仅限于Mono版本的早期.NET功能

1 个答案:

答案 0 :(得分:2)

您可能希望使用File.ReadAllLines来读取文件,它确实可以满足您的需求,并且应该对其进行优化。

var wordList = File.ReadAllLines("yourFileSrc");

为了进一步提高性能,您可能希望将文件拆分为N个文件,并使用TPL(任务并行库)并使用.AsParallel方法并行处理它们(如Evk所建议)

有关PLINQ的更多信息,您可以找到here

***更新

对于解析大字符串,您可能希望先将字符串(不解析它)拆分为多个较小字符串,然后并行处理它们。