Начальный GET занимает больше времени, чем получить TF.exe - PullRequest
1 голос
/ 25 сентября 2019

Я загружаю файлы с этим кодом:

TfsTeamProjectCollection tfsTeamProjectCollection 
    = new TfsTeamProjectCollection(new Uri("http://local.DevOps-TFS/tfs/resourceCollection"));

Workspace ws 
    = Workstation.Current.GetAllLocalWorkspaceInfo()[0].GetWorkspace(tfsTeamProjectCollection);

Stopwatch s = new Stopwatch();
s.Start();
ws.Get(new string[] { "$/REPO/file.cpp" }, VersionSpec.Latest, RecursionType.OneLevel, GetOptions.GetAll);
s.Stop();
Console.WriteLine(s.Elapsed.TotalSeconds);

Stopwatch s = new Stopwatch();
s.Start();
ws.Get(new string[] { "$/REPO/file2.cpp" }, VersionSpec.Latest, RecursionType.OneLevel, GetOptions.GetAll);
s.Stop();
Console.WriteLine(s.Elapsed.TotalSeconds);

Это работает хорошо, за исключением того, что первый GET занимает 9 секунд, второй получает 0,05 секунды.Неважно, какие файлы и сколько я получаю, первый файл ВСЕГДА занимает значительно больше времени, чем следующие.

Странная вещь: получение файла с помощью TF.exe работает намного быстрее,Первый получится так же быстро, как и другие.

tf vc get $/REPO/file.cpp /force

Я отладил исходный код TFS-API, и проблема в том, что API ожидает завершения вызова rest-api.Я предполагаю, что есть проблема с аутентификацией, но я не мог понять, что именно не так.Я также отлаживал в TF.exe, чтобы увидеть, как они аутентифицируются, но я не нашел ничего конкретного, и они используют тот же код, что и выше.Но каким-то образом вызов rest-api, переданный из TF.exe, завершился гораздо быстрее, чем вызов rest-api из моего приложения.

Мы используем TFS версии 16. Есть предложения о том, как продолжить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...