• 【.NET程序性能分析】使用VS自带的工具分析.NET程序的性能


    这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量。在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之一也是程序要有好的性能~

    下面以一个大家熟悉比较极端的例子,来说明编写代码时考虑性能的重要性。这里DebugLZQ用的是10.0版本的VS。

    示例程序代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace VS2010性能测试
    {
        class Program
        {
            static void Main(string[] args)
            {
                int start = Environment.TickCount;
                for (int i = 0; i < 1000; i++)
                {
                    string s = "";
                    for (int j = 0; j <200; j++)
                    {
                        s += "Outer index = ";
                        s += i;
                        s += " Inner index = ";
                        s += j;
                        s += " ";
                    }
                }
                int middle = Environment.TickCount;
                Console.WriteLine("Program part1 run for {0} seconds",0.001 * (middle  - start));
                //
                for (int i = 0; i < 1000; i++)
                {
                    StringBuilder s = new StringBuilder(); 
                    for (int j = 0; j <200; j++)
                    {
                        s.Append("Outer index = ");
                        s.Append(i);
                        s.Append("Inner index = ");
                        s.Append(j);
                        s.Append(" ");
                    }
                }
                int end = Environment.TickCount;
                Console.WriteLine("Program part2 run for {0} seconds", 0.001 * (end - middle));
    
                //
                Console.ReadKey();
            }
        }
    }

    差距就是这么大!

    我们可以使用VS自带的性能分析工具来分析这个程序。可以通过“分析”--“启动性能向导”来启动性能分析

    我们可以根据需要选择不同的分析方法

    面以“CPU采样”分析为例

    切换到函数视图

    定位到我们的源码:

    问题找到了~

    【希望对你有帮助~请点击下面的“绿色通道”---“关注DebugLZQ”,共同交流进步~】 

  • 相关阅读:
    Thread.Sleep(0)的作用
    javascript form提交 不执行onsubmit事件解决方案
    获取控件生成的html
    (诡异事件)iframe标签后面的alert不执行
    数据重复插入的问题
    aspnetpager bug
    晒一下我的数据访问层接口
    Jquery.ajax不能解析json对象,报Invalid JSON错误的原因和解决方法(转)
    火狐对ajax的onreadystatechange与IE的不同。
    一个命名的问题把我给折腾的
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/2585245.html
Copyright © 2020-2023  润新知