C#3.5中以下最快的方法是什么:
由于
答案 0 :(得分:0)
这写起来相对较快:
var myStructs =
from file in Directory.GetFiles(".", "*.*", SearchOption.TopDirectoryOnly)
select ConvertFileToStructs(File.ReadAllText(file));
如果这是最快的方式,那么性能方面呢?可能不是,但它不会产生巨大的差异。影响性能的是在ConvertFileToStructs()函数中实现反序列化。但要回答这个问题,我们需要知道文件的具体格式。
请阅读您的评论。我建议进行以下解析:
List<MyStruct> ConvertFileToStructs(string content, int[] mapping)
{
var records = new List<MyStruct>();
int length = content.Length();
for(int i = 0; i < length; i += 247)
records.Add(ConvertRecordToStruct(content.Substring(i,247), mapping));
return records;
}
MyStruct ConvertRecordToStruct(string record, int[] mapping)
{
MyStruct s;
s.Field1 = record.Substring(mapping[0], mapping[1]);
//set other fields
return s;
}
这段代码可能会针对性能进行优化,但我认为它不会显着改变,尤其是因为涉及I / O到磁盘而且Substring()非常快(参见http://dotnetperls.com/substring)。当然,你必须在你的机器上进行测试。
答案 1 :(得分:0)
自定义类来处理文件
class customFile
{
string fileText;
public string FileText
{
get { return fileText; }
set { fileText = value; }
}
}
阅读所有文字
string[] filePaths = Directory.GetFiles(dirPath);
List<customFile> customFiles = new List<customFile>();
foreach (string file in filePaths)
{
customFiles.Add(new customFile { FileText = File.ReadAllText(file) });
}