VS2010中的Profile(性能剖析)

VS2010中的Profile(性能剖析)功能十分实用,它可以协助程序员迅速锁定当前程序的性能瓶颈,为程序的优化做准备。

点击VS2010的Analyze菜单,选择Launch Performance Wizard,依照提示可以很方便地完成Profile的必需配置。可能你会碰到"Injection of runtime library failed"错误,这时就不要使用Wizard,而要选择Analyze下拉菜单中的Profiler->Attach/Detach...,将Profiler附加到进程上。

本文以名为Sorting的小程序为例。程序中除了main函数之外,定义了全局函数SortData和PrintData分别实现排序和打印功能。核心代码如下所示:

//! SortAndPrint definition  
/*! 
    \param iNum 待排序数组大小 
    \param data 待排序数组首指针 
    \return 函数执行成功则返回1 
     
    - 三种方式排序 
        -# 冒泡排序 
        -# 数组+STL sort 
*/  
bool SortData(int &iNum,int* data)  
{  
    int temp;  
    //! 冒泡排序  
    for(int i=1;i<iNum;++i)  
    {  
        for(int j=0;j<iNum-i;++j)  
        {  
            if(data[j]>data[j+1])  
            {  
                temp=data[j];  
                data[j]=data[j+1];  
                data[j+1]=temp;  
            }  
        }  
    }  
    return 1;  
}  
  
//! PrintData definition  
/*!  
    打印有序数列到屏幕  
    \param iNum 待排序数组大小 
    \param data 待排序数组首指针 
    \return 函数执行成功则返回1 
*/  
bool PrintData(int &iNum,int* data)  
{  
      
    //! 输出有序数列  
    for(int i=0;i<iNum;++i)  
    {  
        if(i%50==0)  
        {  
            //system("pause");  
        }  
        _tprintf_s(_T("%d\n"),data[i]);  
    }  
    return 1;  
}  


测试用例为50000个随机整数,采用冒泡排序,程序对应的Sample Profiling Report如图1所示。

图1 采用冒泡排序,程序对应的哦Sample Profiling Report

修改SortData的代码为:

bool SortData(int&iNum,int* data)  
{  
    sort(data,data+iNum-1);  
    return 1;  
} 

  1.  

这里调用了STL中的sort函数模板,程序对应的Sample Profiling Report如图2所示。

图2 调用STL sort函数模板,程序对应的Sample Profiling Report

观察图1和图2中的CPU Usage曲线,一定程度上图2更优一些;观察Hot Path(即调用热路径),已经从图1中的SortData转移到图2中的Unknown Function;另外,函数独占工作时间也发生了变化,图2显示耗费最大的已经不再是SortData函数了。

VS2010同样提供了对比工具,将图1和图2各自的Sample Profiling Report进行Compare,如图3所示。

非常明显,核心的函数调用,调用了STL sort模板函数的新程序对资源的消耗要小很多。

上面的例子说明,借助于VS2010 Profiler,可以迅速锁定当前程序的性能瓶颈,如本例中的SortData函数,为程序的优化做准备;程序优化之后,Profiler也是一个必要的验证工具,只有比较优化前后程序Profiling Report才能确定程序是否真的得到了优化。


文章来源:http://blog.csdn.net/nightelve/article/details/8241096

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值