Отладка .NET 4.0, производительность холодного запуска - PullRequest
1 голос
/ 04 ноября 2010

Эта проблема сводила меня с ума на прошлой неделе.

Мы перешли с нашего решения 3.5 на 4.0 (начали использовать EF4), здесь нет больших проблем. Я уже некоторое время использую Visual Studio Final без каких-либо проблем.

Мигрировал решение и связанные сторонние сборки в .net 4.0, и хотя производительность во время выполнения находится на уровне 3.5, запуск отладчика теперь занимает от 2:30 до 3: 00 , на нескольких хороших компьютерах (Core i7, Core i5 Laptops и Phenom 4x Desktops с большим количеством оперативной памяти).

В решении 3.5 весь этот процесс занял около 20-30 секунд !!, К счастью, если мы запустим сайт без отладки и подключим отладчик только после слов, проблем нет, и все будет в порядке.

В окне вывода я получаю более 4000 исключений в первый раз , которые, кажется, замедляют процесс:

Первое случайное исключение типа 'System.Globalization.CultureNotFoundException' произошло в mscorlib.dll

Я уже отладил это исключение, и никакого заключения, похоже, что в методе CultureInfo имя = Resx, и, очевидно, это неправильная культура:

    public CultureInfo(String name, bool useUserOverride) { 
    if (name==null) {
        throw new ArgumentNullException("name",
            Environment.GetResourceString("ArgumentNull_String"));
    } 
    Contract.EndContractBlock();

    // Get our data providing record 
    this.m_cultureData = CultureData.GetCultureData(name, useUserOverride);

    if (this.m_cultureData == null)
        throw new CultureNotFoundException(
            "name", name, Environment.GetResourceString("Argument_CultureNotSupported"));

    this.m_name = this.m_cultureData.CultureName;
    this.m_isInherited = (this.GetType() != typeof(System.Globalization.CultureInfo)); 
} 

Вот трассировка стека:

>   mscorlib.dll!System.Globalization.CultureInfo.CultureInfo(string name, bool useUserOverride) Line 264 + 0xef bytes  C#
System.Web.dll!System.Web.HttpServerUtility.CreateReadOnlyCultureInfo(string name) + 0xb8 bytes 
System.Web.dll!System.Web.UI.Util.IsCultureName(string s) + 0x84 bytes  
System.Web.dll!System.Web.UI.Util.GetCultureName(string virtualPath) + 0x4a bytes   
System.Web.dll!System.Web.Util.HashCodeCombiner.AddResourcesDirectory(string directoryName) + 0x18c bytes   
System.Web.dll!System.Web.Util.HashCodeCombiner.AddResourcesDirectory(string directoryName) + 0x16c bytes   
System.Web.dll!System.Web.Util.HashCodeCombiner.AddResourcesDirectory(string directoryName) + 0x16c bytes   
System.Web.dll!System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate2(System.Web.Compilation.StandardDiskBuildResultCache diskCache) + 0x13a bytes 
System.Web.dll!System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(System.Web.Compilation.StandardDiskBuildResultCache diskCache) + 0x38 bytes   
System.Web.dll!System.Web.Compilation.BuildManager.RegularAppRuntimeModeInitialize() + 0xaf bytes   
System.Web.dll!System.Web.Compilation.BuildManager.Initialize() + 0x106 bytes   
System.Web.dll!System.Web.Compilation.BuildManager.InitializeBuildManager() + 0xb8 bytes    
System.Web.dll!System.Web.HttpRuntime.HostingInit(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) + 0x15f bytes   
System.Web.dll!System.Web.HttpRuntime.InitializeHostingFeatures(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) + 0x3c bytes  
System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) + 0x224 bytes   
System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel) + 0x1d bytes 
[Appdomain Transition]  
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0xfd1 bytes  
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x2f bytes    
System.Web.dll!System.Web.Hosting.ApplicationManager.GetAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x67 bytes  
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObjectInternal(string appId, System.Type type, System.Web.Hosting.IApplicationHost appHost, bool failIfExists, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) + 0x4d bytes   
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObject(string appId, System.Type type, string virtualPath, string physicalPath, bool failIfExists, bool throwOnError) + 0x8d bytes   
System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObject(string appId, System.Type type, string virtualPath, string physicalPath, bool failIfExists) + 0x35 bytes  
WebDev.WebHost40.dll!Microsoft.VisualStudio.WebHost.Server.GetHost() + 0x14b bytes  
WebDev.WebHost40.dll!Microsoft.VisualStudio.WebHost.Server.OnSocketAccept(object acceptedSocket) + 0xa7 bytes   
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(object state) Line 1507 + 0xb bytes    C#
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool ignoreSyncCtx) Line 441 + 0xe bytes    C#
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() Line 1486 + 0x22 bytes   C#
mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() Line 974   C#
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() Line 1341 + 0x5 bytes   C#
  • У кого-нибудь была такая же проблема?
  • Любые идеи, как найти причину этого исключения (трассировка стека не окончательный) или / и производительность Деградация
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...