Performance rules by ID
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Warning | Description |
---|---|
DA0001: Use StringBuilder for concatenations | Calls to System.String.Concat are a significant proportion of the profiling data. Consider using the StringBuilder class to construct strings from more than one segment. |
DA0002: VSPerfCorProf.dll is missing | The profiler couldn't find VSPerfCorProf.dll during the profiling run. This warning occurs when command-line tools for the collection of profiler data are used without using the VSPerfCLREnv.cmd tool to initialize the necessary environment variables. |
DA0003: Many kernel samples | A significant proportion of the call stack samples collected for the application were executing in kernel mode. Consider profiling your application by using a different profiling method. |
DA0004: High processor usage | Processor (CPU) usage was enormous while profiling data that was collected using the instrumentation method. Consider using the sampling profiling method when profiling a CPU bound application. |
DA0005: Frequent GC2 collections | A high number of .NET memory objects are being reclaimed in generation 2 garbage collection. |
DA0006: Override Equals() for value types | Calls to the Equals method or the equality operators of a public value type are a significant proportion of the profiling data. Consider implementing a more efficient method. |
DA0007: Avoid using exceptions for control flow | A high rate of .NET Framework exception handlers were called in the profiling data. Consider using other control flow logic to reduce the number of exceptions that are thrown. |
DA0008: Few samples collected | Only a few samples were collected in the profiling run. Consider a longer run or faster sampling rate for more significant results. |
DA0009: High % time in JIT | A significant percentage of application execution time was spent in the Just In Time (JIT) compiler. |
DA0010: Expensive GetHashCode | Calls to the GetHashCode method of the type are a significant proportion of the profiling data or the method allocates memory. |
DA0011: Expensive CompareTo | The CompareTo method of the type is expensive or allocates memory. |
DA0012: Significant amount of Reflection | Calls to the System.Reflection methods such as InvokeMember and GetMember or to Type methods such as MemberInvoke are a significant proportion of the profiling data. When you can, consider replacing these methods with early binding to the methods of dependent assemblies. |
DA0013: High usage of String.Split or String.Substring | Calls to the System.String.Split or System.String.Substring methods are a signifiicant portion of the profiling data. Consider using System.String.IndexOf or System.String.IndexOfAny if you're testing for the existence of a substring in a string. |
DA0014: Extremely high rates of paging active memory to disk | System performance data that was collected in the profiling run indicates an enormous rate of paging active memory to and from the disk occurred throughout the profiling run. Paging rates at this level usually will impact application performance and responsiveness. Consider reducing memory allocations by revising algorithms. You might also have to consider the memory requirements of your application, or running profiling again on a computer that has more memory. |
DA0017: High rates of paging active memory to disk | System performance data that was collected in the profiling run indicates a high rate of paging active memory to and from the disk occurred throughout the profiling run. Paging rates at this level usually will impact application performance and responsiveness. Consider reducing memory allocations by revising algorithms. You might also have to consider the memory requirements of your application, or running profiling again on a computer that has more memory. |
DA0018: 32-bit Application running at process managed memory limits | System data that was collected during the profiling run indicates the .NET Framework memory heaps approached the highest size the managed heaps can grow to in a 32-bit process. The value reported is the highest observed value of the heaps while the profiled process being was active. Consider optimizing the use of managed resources by the application. |
DA0021: High rate of Gen 1 garbage collections | System performance data that was collected during profiling indicate a significant proportion of the memory for.NET Framework objects was reclaimed in generation 1 of garbage collection compared to generation 0 data collection. |
DA0022: High rate of Gen 2 garbage collections | System performance data that was collected during profiling indicate a significant proportion of the memory for.NET Framework objects was reclaimed in generation 2 of garbage collection compared to generation 0 and generation 1 garbage collections. |
DA0023: High GC CPU time | System performance data that was collected during profiling indicates the amount of time spent in garbage collection is significant compared with the total application processing time. |
DA0024: Excessive GC CPU Time | System performance data that was collected during profiling indicates the amount of time spent in garbage collection is excessively high compared with the total application processing time. |
DA0026: Excessive kernel CPU time processing | The proportion CPU time that was executed in kernel mode was more than the amount of time spent in user mode. Consider profiling again and sampling the number of system calls (syscalls) to determine the cause of the high kernel mode execution times. |
DA0029: Unsupported CLR Version | You're trying to profile an application using .NET Framework version 1.1 that isn't supported by the Profiling Tools. |
DA0030: Gather Tier Interaction measurements for database projects | Calls to System.Data methods are a significant proportion of the profiling data and you haven't collected tier interaction data in the profiling run. Consider profiling again and adding tier interaction data. |
DA0038: High Rate of Lock contentions | System performance data that is collected with the profiling data indicates an enormous rate of lock contentions occurred during application execution. Consider profiling again using the concurrency profiling method to find the cause of the contentions. |
DA0039: Very High Rate of Lock contentions | System performance data that is collected with the profiling data indicates an excessively high rate of lock contentions occurred during application execution. Consider profiling again using the concurrency profiling method to find the cause of the contention. |
DA0501: Average CPU consumption by the Process being profiled. | This message reports the percentage of time that a processor was busy executing instructions from the application. The reported value is the average over all the measurement intervals in which the process being profiled was active. The value of value can be greater than 100% on a machine with more than one processor. |
DA0502: Maximum CPU consumption by the Process being profiled | This message reports the highest percentage of time that a processor was busy executing instructions from the application. The reported value is the highest value reported among all the measurement intervals in which the process being profiled was active. The percentage can be greater than 100% on a machine with more than one processor. |
DA0503: Average Working Set in Bytes for the Process being profiled | This message reports the average amount of physical memory that the process is currently using in bytes (the working set). The process working set contains pages from the process address space that currently occupy physical memory. |
DA0504: Maximum Working Set in Bytes for the Process being profiled | This message reports the highest amount of physical memory that the process is currently using in bytes. The process working set contains pages from the process address space that currently occupy physical memory. This rule reports the highest value for the process working set while profiling was active. |
DA0505: Average Private Bytes allocated for the Process being profiled | This message reports the average amount of virtual memory that the process has currently allocated in bytes (Private bytes). Private bytes are virtual memory locations that were allocated by the process that can only be accessed by threads running inside the process. |
DA0506: Maximum Private Bytes allocated for the Process being profiled | This message reports the highest amount of virtual memory that the process has currently allocated in bytes (Private bytes). Private bytes are virtual memory locations that were allocated by the process that can only be accessed by threads running inside the process. |