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コマンドの使用について考えたことはありますか?任意の 2 つのリビジョンの diff 出力が得られるため、追加、変更、削除された行などの比較を開始できます。各行の注釈を解析するよりも確実に効率的です。

于 2013-04-22T14:52:35.047 に答える