我正在处理行数为60000行的文件。
这些文件存储在perforce中。
为了计算一些统计数据,比如添加的行数和行数的注释,我使用方法repository.GetFileAnnotations()
给出文件的内容,结果返回为FileAnnotation的Ilist,每个fileAnnotation封装一个这个文件的行。
因此,我不得不创建一个临时文件,并使用foreach读取所有Ilist并在此文件中写入每一行。这使得应用程序不够快。
我该如何着手优化这种机制。
string tempfile = CreateTmpFile();
FileSpec fso = new FileSpec(FileSpec.DepotSpec(fsd.depotPath).DepotPath, Revision.Head);
IList<FileSpec> fsos = new List<FileSpec>();
fsos.Add(fso);
Options opts = new Options(); opts.Add("-a", "");
IList<FileAnnotation> fas = rep.GetFileAnnotations(fsos, opts);
foreach (FileAnnotation fa in fas)
{
lines4 += fa.Line;
UpdateTmpFile(tempfile, fa.Line);
}
答案 0 :(得分:1)
您是否考虑过使用diff2
命令?它会为您提供任意两个版本的差异输出,因此您可以开始比较添加,更改,删除等行。它肯定比解析每一行的注释更有效。