`
阅读更多

在开发.NET应用程序中,尤其是数据库+运算密集的混合应用时,时常发现应用程序运行的不够快,优化无疑是一个程序员不得不面临的问题。如何找到软件系统的瓶颈就成了摆在程序员面前的难题。微软的Application Center Test 能够帮助ASP.NET程序员随时回答性能到底恶化到哪里了,但是要找出到底应用程序的那一部分导致了运行缓慢ACT却无能为力。对于桌面型的exe应用程序,ACT就更不行了,当然有很多商业的剖析器可以回答上述问题(大多数都很贵),但最近开发的开放源代码的nprof却是最可行的方案。

nprof下载地址为:http://nprof.sourceforge.net/

在文章中使用nprof 0.9alpha版的bin分发运行包nprof-0.9b-alpha.zip进行讲解,更新版本应该类似。

nprof解压缩后,双击RegisterProfilerHook.bat注册剖析Hook,反注册请手工执行:
regsvr32 /u bin/nprof.hook.dll

nprof同VS.NET 2003集成还有一些Bug,所以暂时不推荐运行RegisterVSNetAddin.bat。

完成上述操作后即可运行NProf.Application.exe。通过File->New菜单命令创建一个新的剖析器项目,选择一个要分析的exe执行程序,然后创建项目即可。对话框中Common Options的两个选项对于File项目类型都不用选。确认后按F5即可运行欲分析的exe,执行一些此exe的操作,退出后即可看到nprof详细的剖析这次操作的数据。提醒一句,当exe程序被剖析时,文档显示运行速度将会比平时慢20倍左右,因为CLR的profiling API需要记录几乎没一个调用的时间等等信息。

最后解释一下剖析的结果意义来结束本文:
  • # of Calls:方法被调用的次数。(注意,这里方法的含义比一般.NET含义要大,包括了委托,事件,异步调用等等,因为这些在CLR看来都是方法)
  • % of Total Shows in percentage:方法占总的运行时间的百分比,这里的方法运行时间由方法运行时间和创建线程运行时间两部分组成。
  • % in Method:方法运行时间占总的运行时间百分比,这里方法运行时间也包括了所有调用的子方法的运行时间。
  • % in Children:方法调用的子方法占总的运行时间的百分比。
  • $ Suspended:挂起时间,在你没有使用多线程时,这里应该始终为0。

当你选择任意的被方法名后,nprof还会在列表下方显示被选择方法的Calless(调用其它方法)和Callers(被其它方法调用)的一些信息,其中:

  • # of Calls:调用的次数
  • % of Total:在方法内,各个调用方法所占的百分比。
  • % of Parent:在方法内,各个调用方法再加上父方法调用时间所占的百分比。

你也可以单击列表列表头,这将对此列排序,这样更容易找到瓶颈,找到瓶颈后,就可以开始有目标的考虑如何优化应用程序了。最后提醒一句,只要应用程序足够快就可以了,毕竟客户很少会为快一倍的应用程序多付一倍的钱,而要让应用程序快一倍所付出的努力却往往不只一倍。

分享到:
评论

相关推荐

    NProf-开源

    NProf是.NET应用程序的探查器。 该项目已移至Google Code(http://code.google.com/p/nprof/)。

    华普微四通道数字隔离器

    华普微四通道数字隔离器,替换纳芯微,川土微

    基于区块链的分级诊疗数据共享系统全部资料+详细文档.zip

    【资源说明】 基于区块链的分级诊疗数据共享系统全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    本文简要介绍了sql注入

    sql注入

    【创新未发表】基于多元宇宙优化算法MVO-PID控制器优化研究Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    精选微信小程序源码:酒水商城小程序(含源码+源码导入视频教程&文档教程,亲测可用)

    微信小程序“仁怀酱酒宝”是一款专门针对酒类销售的商城模板,为开发者和商家提供了便捷的在线销售平台。这款源码集成了完整的商城功能,包括商品展示、购物车、订单管理、支付系统等,适合想要快速搭建酒类电商平台的企业或个人。以下是基于这个主题的详细知识点: 1. **微信小程序开发**: - 微信小程序是腾讯公司推出的一种轻量级应用开发框架,可在微信内运行,无需下载安装,方便用户快速访问。 - 开发微信小程序需要掌握WXML(微信小程序标记语言)和WXSS(微信小程序样式语言),以及JavaScript进行业务逻辑处理。 2. **商城模板**: - 商城模板是预先设计和开发好的电子商务平台,提供基础的购物流程和界面布局,帮助开发者快速构建在线商店。 - “仁怀酱酒宝”作为酒类商城模板,其设计可能包含商品分类、品牌展示、促销活动、用户评价等功能模块。 3. **源码**: - 源码是程序的原始代码,可以被开发者直接修改和扩展,以便适应特定需求。 - 提供的源码包含了整个小程序的结构和逻辑,包括前端页面代码、后端接口调用、数据库交互等。 4. **源码导入教程**: - “源码导入视频教程

    HengCe-18900-2024-2030中国鱼子酱市场现状研究分析与发展前景预测报告-样本.docx

    HengCe-18900-2024-2030中国鱼子酱市场现状研究分析与发展前景预测报告-样本.docx

    基于Django实现校园智能点餐系统源码+数据库(高分期末大作业)

    基于Django实现校园智能点餐系统源码+数据库(高分期末大作业),个人经导师指导并认可通过的98分大作业设计项目,主要针对计算机相关专业的正在做课程设计、期末大作业的学生和需要项目实战练习的学习者。 基于Django实现校园智能点餐系统源码+数据库(高分期末大作业)基于Django实现校园智能点餐系统源码+数据库(高分期末大作业),个人经导师指导并认可通过的98分大作业设计项目,主要针对计算机相关专业的正在做课程设计、期末大作业的学生和需要项目实战练习的学习者。基于Django实现校园智能点餐系统源码+数据库(高分期末大作业),个人经导师指导并认可通过的98分大作业设计项目,主要针对计算机相关专业的正在做课程设计、期末大作业的学生和需要项目实战练习的学习者。基于Django实现校园智能点餐系统源码+数据库(高分期末大作业),个人经导师指导并认可通过的98分大作业设计项目,主要针对计算机相关专业的正在做课程设计、期末大作业的学生和需要项目实战练习的学习者。 基于Django实现校园智能点餐系统源码+数据库(高分期末大作业),个人经导师指导并认可通过的98分大作业设计项目,主要针对计

    IMG_1995.jpg

    IMG_1995.jpg

    我的职业生涯规划书——杜默昕.pages

    我的职业生涯规划书——杜默昕.pages

    NO.4学习样本,请参考第4章的内容配合学习使用

    免责声明 此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。所有的样本和工具仅供学习使用,特此声明学习样本和作业样本都不会对计算机设备造成破坏,请在安全的环境下运行,任何使用工具和样本进行计算机设备破坏的,所产生的责任与圈主无关!下载样本和工具默认同意此声明!

    基于python神经网络分类难度的量化策略源码(通过识别和优先考虑关键路径来分配更高精度,降低计算开销).zip

    基于python神经网络分类难度的量化策略源码(通过识别和优先考虑关键路径来分配更高精度,降低计算开销) 【项目介绍】 一种基于神经网络分类难度的量化策略,旨在通过识别和优先考虑关键路径(对特定类别输出至关重要的神经元和滤波器)来分配更高精度,从而在保持模型准确性的同时降低计算开销。 Main Function Points 评估每个神经元和滤波器对特定类别的重要性,并构建关键路径。 计算量化对整体模型性能的影响,并采用搜索算法确定最佳比特宽度配置。 通过知识蒸馏进一步优化量化模型,以恢复任何丢失的准确性。 Technology Stack PyTorch 神经网络量化

    Nvidia GeForce GTX 1080 TI显卡驱动(Win7、Win8驱动)

    硬件识别与通信:显卡驱动包含了 GTX 1080 TI的硬件设备信息,使得操作系统能够准确识别显卡,并与之建立通信桥梁,实现数据的正常传输。若没有安装正确的驱动程序,操作系统将无法充分发挥显卡的功能,甚至可能无法识别显卡的存在 。 性能优化与提升:NVIDIA 会不断优化驱动程序,以充分挖掘 GTX 1080 的性能潜力。通过对显卡核心频率、显存频率、渲染管线等参数的精细调整,以及对图形处理算法的优化,驱动程序能够显著提升显卡在各种应用场景下的性能表现,如游戏中的帧率提升、专业图形软件中的渲染速度加快等。 功能启用与扩展:安装驱动程序后,可以启用 GTX 1080 TI 的多项功能,如 2D 和 3D 加速、多显示器支持、硬件视频解码加速等。这些功能的正常启用,能够为用户带来更加流畅的视觉体验和更高效的工作效率。 游戏与应用程序兼容性:许多新推出的游戏和专业图形应用程序在开发过程中会针对最新的显卡驱动进行优化和测试。因此,及时更新 NVIDIA GTX 1080 TI 的驱动程序,有助于确保这些游戏和应用程序能够在显卡上稳定运行,并获得最佳的兼容性和性能表现。

    完整数据-全国人口1%抽样调查微观数据

    数据来源:census 提供多个版本的组合,方便您各种场合和数据分析软件的应用: 其中, csv格式是格式化的文本数据文件,适用于excel、stata、spss等软件直接导入应用。 dta格式是stata软件的版本,spss也能导入应用。 csv_dta格式csv、dta两个版本的打包压缩文件数据包。 数据来源:census

    超声程序随心所欲win7版exe安装包

    超声程序随心所欲win7版exe安装包

    基于hyperledger的区块链超市管理系统全部资料+详细文档.zip

    【资源说明】 基于hyperledger的区块链超市管理系统全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    vscode,linux下的安装包 (旧)

    适配Ubuntu18.04版本

    bpi flash读ID程序

    bpi flash读ID程序

    OpenPose所有模型文件(完整版),已经过 openpose-1.7.0-binaries-win64-cpu-python3.7-flir-3d 测试确认OK

    包含了openpose用到的pose、face、hand 所有用到的模型,已经按照实际所需目录结构存放。

    基于FISCO-BCOS的区块链供应链金融应用全部资料+详细文档.zip

    【资源说明】 基于FISCO-BCOS的区块链供应链金融应用全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Global site tag (gtag.js) - Google Analytics