Производительность возврата View в .NET Core MVC - PullRequest
0 голосов
/ 13 декабря 2018

У меня очень простой контроллер и нет данных в базе данных, но по какой-то причине моему приложению для возврата требуется 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 повлиять на это так сильно?

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