【.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”,共同交流进步~】 

转载于:https://www.cnblogs.com/DebugLZQ/archive/2012/07/10/2585245.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链表删除功能实现演示

插入算法和删除演示&#xff1a; #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void …

如何编写Ajax库

Ajax请求步骤 1. 创建AJax对象 2. 连接服务器 3. 发送请求 4. 接受返回 1 function ajax(url, fnSucc, fnFaild)2 {3 //1.创建ajax对象4 var oAjaxnull;5 6 if(window.XMLHttpRequest)7 {8 oAjaxnew XMLHttpRequest();9 } 10 …

数组和链表的总结

数据结构 狭义: 数据结构是专门研究数据存储的问题 数据的存储包含两方面:个体的存储 个体关 系的存储 广义: 数据结构既包含数据的存储也包含数据的操作 对存储数据的操作就是算法 算法: 狭义&#xff1a; 算法是和数据的存储方式密切相关 广义&#xff1a; 算法和数…

[转]CPoint+CSize+CRect学习大纲

CPointCSizeCRect学习大纲。熟知CPoint、CSize、CRect类的基类class CPoint : public tagPOINTclass CSize : public tagSIZEclass CRect : public tagRECT留意CPoint、CSize、CRect之间的互操作&#xff0c;什么样的操作会涉及这些类型中的两个或多个。Point - Point > Siz…

栈入门

线性结构的两种常见应用之一栈 定义&#xff1a;一种可以实现”先进后出”的存储结构&#xff0c;栈类似于箱子 分类&#xff1a;静态栈、动态栈 算法&#xff1a;出栈、压栈 栈的定义&#xff1a; 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性…

Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由

一、实验目标 掌握交换机Tag VLAN 的配置&#xff1b;掌握三层交换机基本配置方法&#xff1b;掌握三层交换机VLAN路由的配置方法&#xff1b;通过三层交换机实现VLAN间相互通信&#xff1b;二、实验背景 某企业有两个主要部门&#xff0c;技术部和销售部&#xff0c;分处于不同…

栈程序演示

#include <stdio.h> #include <malloc.h> #include <stdlib.h>typedef struct Node{int data;struct Node * pNext; }NODE,*PNODE;typedef struct Stack{PNODE pTop; //栈顶元素PNODE pBottom; //栈底部元素 }STACK,*PSTACK;void init(PSTACK); v…

noi 2009 二叉查找树 动态规划

思路&#xff1a; 先把权值离散化 按数据值排序 sum[i]为前i个节点频度和 dp[i][j][w]表示把节点[i,j]合并成一颗根节点权值不小于w的子树所需的访问代价与修改代价的最小和 dp[i][j][w]min(dp[i][k-1][w]dp[k1][j][w]sum[j]-sum[i-1]K,dp[i][k-1][a[k].weight]dp[k1][j][a[k].…

出栈程序演示

#include <stdio.h> #include <malloc.h> #include <stdlib.h>typedef struct Node{int data;struct Node * pNext; }NODE,*PNODE;typedef struct Stack{PNODE pTop; //栈顶元素PNODE pBottom; //栈底部元素 }STACK,*PSTACK;void init(PSTACK); v…

不管你挣多少钱永远都是问题

近几个月太多事情&#xff0c;太多变化&#xff0c;一直没有心情写博客&#xff0c;今天补上一篇吧&#xff01; 我会一直在这里坚持下去的&#xff01;他年收入100多万开着一辆宝马5&#xff0c;天天被应酬折腾的要死要活&#xff0c;真想狠狠心不干了&#xff0c;当初干嘛非要…

栈清空程序演示

#include <stdio.h> #include <malloc.h> #include <stdlib.h>typedef struct Node{int data;struct Node * pNext; }NODE,*PNODE;typedef struct Stack{PNODE pTop; //栈顶元素PNODE pBottom; //栈底部元素 }STACK,*PSTACK;void init(PSTACK); v…

hdu 1325 Is It A Tree?

题目链接 #include"stdio.h" int set[1001],v[1001],cnt[10001],flag; //初始化 void fun() {int i;flag1;for(i1;i<1000;i){set[i]i;v[i]0;cnt[i]0;} } //查找根节点 int find(int x) {return xset[x]?x:find(set[x]); } int judge() {int i,t;for(i1;i<1000…

数据库的介绍

##本单元目标 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ …

InfoPath Resource Sites

http://blogs.msdn.com/infopath_support/archive/2009/11/09/9919841.aspx转载于:https://www.cnblogs.com/mingle/archive/2012/07/24/2606277.html

MySQL的常见命令

###MySQL的常见命令 1.查看当前所有的数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 show tables; 4.查看其它库的所有表 show tables from 库名; 5.创建表 create table 表名( 列名 列类型, 列名 列类型…

算法导论 CLRS 22.4-4 解答

先说结论&#xff1a; 对于有环图&#xff0c;top排序不一定可以生成坏边最小的序列 证明&#xff1a; 1. 假设G至少需要去掉k条边才能变成无环图&#xff0c;则任意序列P的坏边数目bad[P] > k&#xff1b; 证明&#xff1a; 如果存在P使得bad[P] < k, 则只要去掉P中的坏…

MySQL DQL语言的笔记

##DQL语言的学习 ###进阶1&#xff1a;基础查询 语法&#xff1a; SELECT 要查询的东西 【FROM 表名】; 类似于Java中 :System.out.println(要打印的东西); 特点&#xff1a; ①通过select查询完的结果 &#xff0c;是一个虚拟的表格&#xff0c;不是真实存…

MySQL学习笔记——显示数据库信息

show privileges 显示可用的系统权限清单。   View Code mysql> show privileges;-----------------------------------------------------------------------------------------------------------------------| Privilege | Context …

MySQL DML语言笔记

##DML语言 ###插入 语法&#xff1a; insert into 表名(字段名&#xff0c;...) values(值1&#xff0c;...); 特点&#xff1a; 1、字段类型和值类型一致或兼容&#xff0c;而且一一对应 2、可以为空的字段&#xff0c;可以不用插入值&#xff0c;或用null填充…

2012年7月份第4周51Aspx源码发布详情

变幻球游戏源码 2012-7-27[VS2010] 游戏规则&#xff1a;球变色顺序: 绿->黄->橙->红->爆炸&#xff0c;在GO完后就可以开始不停拨球&#xff0c;任何颜色都可以拨球&#xff0c;让其重新计时&#xff0c;否则等它们同时变出一大片黄色&#xff0c;会应接不暇&…