Closed
Description
.NET processes are spun up repeatedly as part of a developer's inner loop development process, including for the app itself being debugged. We want to drive down the overheads across all tools employed as part of inner loop, and that includes reducing runtime startup costs wherever possible.
Issues:
- TPA list building is contributing large % of time to startup
- Environment.GetEnvironmentVariables() called multiple times during MVC app startup
- Implement EventSource generator
- Speed up type loading with R2R images
- Remove unnecessary regex from ASP.NET startup
- Improve startup time for EventSources
- Avoid EventSource contention at startup
- Exception performance with debugger attached
- Eliminate low-hanging fruit in Hello, World startup
- Allocations in Hello, World from Console.Write
- Allocations in ManifestBuilder.CreateManifestString in EventSource startup
- Closure allocations from ServiceCollectionDescriptorExtensions at MVC startup
- Allocations from GetCustomAttributes impacting MVC startup
- Avoiding LINQ overheads in JsonConfiguration
- Avoiding string-related allocation in LogValuesFormatter ctor during startup
- Reduce Process.Start overhead
- Avoid allocations in LoggerRuleSelector in MVC startup
- Avoid CallSiteFactory allocations in MVC startup
- Avoid empty ParameterInfo[] allocations at startup
- Avoid string concats in CreateDefaultLogMessage
- Remove most LINQ usage from Microsoft.Extensions.Configuration
- Avoid expensive CertificateManager work when it's not enabled
- Reduce Guid parsing times during startup
- Avoid LINQ usage in EnvironmentVariablesConfigurationProvider
- Improve throughput of GetEnvironmentVariables
- Skip invariant init test for Invariant
- Reduce MakeGenericType overhead impacting startup
- Reduce SafeHandles created enumerating certificates at startup
- Remove allocations from ObjectCache
- Reduce allocations in OptionsManager at startup
- Remove closure/delegate allocations from CreateLogger
- Improve OidLookup.ToLookup perf
- Reduce allocation in BigInteger used to process certificates
- Improve EventSource attribute lookup during ctor
- Remove more LINQ from dependency injection
- Remove boxing from configuration loading