У меня очень простой контроллер и нет данных в базе данных, но по какой-то причине моему приложению для возврата требуется 1300 мс. Просмотр после нажатия на ссылку
public IActionResult Index()
{
var sw = new Stopwatch();
sw.Start();
var user = _context.Users.FirstOrDefault(User.Identity.Name);
if (user == null || user?.Permissions != Permissions.Student)
{
ViewData["Message"] = $"Unauthorized";
return View();
}
var user_friends = _context.Users.Where(x => x.FriendList.Any(x => x.Id == user.Id).ToList();
var list = user_friends.Select(x => Mapper(x)).ToList();
Console.Clear();
Console.WriteLine("time:");
Console.WriteLine(sw.ElapsedMilliseconds); // it takes 240 ms
return View(list);
// Request finished in 1327.6186ms 200 text/html; charset=utf-8
}
public ObjectDTO Mapper(Object input)
{
return new ObjectDTO
{
FirstName = input.FirstName,
SecondName = input.SecondName,
Age = input.Age,
School = input.School,
Email = input.Email
}
}
Дополнительно я перезаписал
public override void OnActionExecuting (контекст ActionExecutingContext)
С другим вызовом БД + некоторой логикой, которая составляет еще 200 мс
Итак, давайте округлим ее и те 2Методы контроллера вместе занимают 240 + 200, скажем, 600 мс
Откуда взялись эти дополнительные 700 (1300-600) мс?
Как я могу измерить время, которое фактически занимает рендер View?
Может ли несколько сравнений строк в файле .cshtml повлиять на это так сильно?