1

我正在处理行数可以为 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);
}
4

1 回答 1

1

您是否考虑过使用该diff2命令?它将为您提供任何两个修订版的差异输出,因此您可以开始比较添加、更改、删​​除等的行。它肯定比解析每一行的注释更有效。

于 2013-04-22T14:52:35.047 回答