• VS2010自带的性能分析工具分析.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采样”分析为例

    切换到函数视图

    定位到我们的源码:

    问题找到了~

    http://www.cr173.com/html/16133_1.html

  • 相关阅读:
    JUC-ThreadPool线程池
    JUC-JUC强大的辅助类讲解(Semaphore、CyclicBarrier、CountDownLatch)
    JUC—Callable接口
    集合与数组之间相互转化
    [UnityShader基础]07.MaterialPropertyDrawer
    [UnityShader基础]06.#pragma multi_compile
    [Unity优化]UI优化(三):GraphicRebuild
    [UnityAPI]SerializedObject类 & SerializedProperty类
    [Unity算法]点是否在多边形范围内
    [UGUI]圆形Image
  • 原文地址:https://www.cnblogs.com/chen110xi/p/5647607.html
Copyright © 2020-2023  润新知