aspnet / Mvc

[Archived] ASP.NET Core MVC is a model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and Web Pages w/ Razor. Project moved to https://github.com/aspnet/AspNetCore
Apache License 2.0
5.61k stars 2.14k forks source link

DefaultViewComponentSelector need to cache #1113

Closed troydai closed 9 years ago

troydai commented 10 years ago

This shows up in MusicStore (CLR) profiling. It can be easily cached.

Name
 Type System.RuntimeType[]
+ CLR <<clr!JIT_NewArr1>>
|+ LIB <<mscorlib.ni!RuntimeAssembly.get_DefinedTypes>>
||+ module EntityFramework <<EntityFramework!Microsoft.Data.Entity.DbContext..ctor(class System.IServiceProvider,class Microsoft.Data.Entity.DbContextOptions)>>
||+ module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.DefaultViewComponentSelector.<SelectComponent>b__1(class System.Object,class System.Reflection.Assembly)>>
|| + LIB <<System.Core.ni!System.Linq.Enumerable.ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1)>>
||  + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.DefaultViewComponentHelper+<InvokeAsync>d__1.MoveNext()>>
||   + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||    + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!DefaultViewComponentHelper.InvokeAsync>>
||     + module igmy2w05.uiw <<igmy2w05.uiw!Asp.Views_Shared__Layout_cshtml+<ExecuteAsync>d__1.MoveNext()>>
||      + LIB <<mscorlib.ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[System.__Canon](System.__Canon ByRef)>>
||       + module igmy2w05.uiw <<igmy2w05.uiw!Views_Shared__Layout_cshtml.ExecuteAsync>>
||        + module Microsoft.AspNet.Mvc.Razor <<Microsoft.AspNet.Mvc.Razor!Microsoft.AspNet.Mvc.Razor.RazorView+<RenderPageCoreAsync>d__1.MoveNext()>>
||         + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||          + module Microsoft.AspNet.Mvc.Razor <<Microsoft.AspNet.Mvc.Razor!Microsoft.AspNet.Mvc.Razor.RazorView+<RenderPageAsync>d__1.MoveNext()>>
||           + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||            + module Microsoft.AspNet.Mvc.Razor <<Microsoft.AspNet.Mvc.Razor!Microsoft.AspNet.Mvc.Razor.RazorView+<RenderLayoutAsync>d__1.MoveNext()>>
||             + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||              + module Microsoft.AspNet.Mvc.Razor <<Microsoft.AspNet.Mvc.Razor!Microsoft.AspNet.Mvc.Razor.RazorView+<RenderAsync>d__1.MoveNext()>>
||               + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                + module Microsoft.AspNet.Mvc.Razor <<Microsoft.AspNet.Mvc.Razor!RazorView.RenderAsync>>
||                 + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.ViewResult+<ExecuteResultAsync>d__1.MoveNext()>>
||                  + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                   + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.FilterActionInvoker+<InvokeActionResult>d__1.MoveNext()>>
||                    + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                     + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.FilterActionInvoker+<InvokeActionResultFilter>d__1.MoveNext()>>
||                      + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                       + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.FilterActionInvoker+<InvokeActionResultWithFilters>d__1.MoveNext()>>
||                        + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                         + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.FilterActionInvoker+<InvokeAsync>d__1.MoveNext()>>
||                          + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                           + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.MvcRouteHandler+<RouteAsync>d__1.MoveNext()>>
||                            + module mscorlib <<mscorlib!AsyncMethodBuilderCore.Start>>
||                            + LIB <<mscorlib.ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon].SetResult(System.__Canon)>>
||                             + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.DefaultActionSelector+<SelectAsync>d__1.MoveNext()>>
||                              + LIB <<mscorlib.ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon].SetResult(System.__Canon)>>
||                               + module Microsoft.AspNet.Mvc.Core <<Microsoft.AspNet.Mvc.Core!Microsoft.AspNet.Mvc.DefaultActionSelector+<SelectBestCandidate>d__1.MoveNext()>>
||                                + LIB <<mscorlib.ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Boolean].SetResult(Boolean)>>
||                                 + module Microsoft.AspNet.Mvc.ModelBinding <<Microsoft.AspNet.Mvc.ModelBinding!Microsoft.AspNet.Mvc.ModelBinding.CompositeValueProvider+<ContainsPrefixAsync>d__1.MoveNext()>>
||                                  + LIB <<mscorlib.ni!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Boolean].SetResult(Boolean)>>
||                                  + LIB <<mscorlib.ni!Task.FinishStageThree>>
rynowak commented 9 years ago

e6b75de0af201538892914b8fe7d2b84f9a9fffc