ASP.NET Web API 2 Async les méthodes d'action de la Tâche.Run performance

Je suis en train de l'indice de référence (à l'aide d'Apache bench) un couple de ASP.NET l'API Web 2.0 des points de terminaison. L'un des qui est synchrone et un async.

        [Route("user/{userId}/feeds")]
        [HttpGet]
        public IEnumerable<NewsFeedItem> GetNewsFeedItemsForUser(string userId)
        {
            return _newsFeedService.GetNewsFeedItemsForUser(userId);
        }

        [Route("user/{userId}/feeds/async")]
        [HttpGet]
        public async Task<IEnumerable<NewsFeedItem>> GetNewsFeedItemsForUserAsync(string userId)
        {
            return await Task.Run(() => _newsFeedService.GetNewsFeedItemsForUser(userId));
        }

Après avoir regardé Steve Sanderson présentation, j'ai lancé la commande suivante ab -n 100 -c 10 http://localhost.... à chaque extrémité.

J'ai été surpris que les points de référence pour chaque point de terminaison semblait avoir à peu près la même.

Aller au large de ce que Steve a expliqué que je m'attendais à ce que l'async point de terminaison serait plus performant parce qu'il serait communiqué de pool de threads threads du pool de threads, immédiatement, les rendant ainsi disponibles pour d'autres demandes et d'améliorer le débit. Mais les chiffres semblent exactement la même.

Que suis-je malentendu ici?

OriginalL'auteur Simon Lomax | 2015-03-20