代码优化的第一步是判定程序热点

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 十一月 7, 2009 在 12:13 下午

我们在做性能优化的时候,第一步需要判定哪部分程序最需要做优化,一般来说程序运行最耗时的那部分,也就是程序热点(Hotspots)是我们的候选,而优化热点函数后性能提升效果也最明显。

为什么要提这个问题呢?因为最近做过一些项目,很多人一上来看到程序中这里适合用多线程,那里适合用SSE,但是有没有先考虑过这部分程序优化后性能提升的比例能有多少?一般我们在做优化之前都需要有一个基本的估计,需要优化的代码占程序总运行时间的多少,用不同的手段最多能达到怎么样的优化效果,达到这样的效果后是否满足我的既定目标?这样分析下来后才开始分配人力和时间资源。

有些人觉得,我自己心里很清楚程序哪里最耗时。但是感觉往往不是那么精确的,现在寻找热点的工具有很多, VTuneParallel Amplifier等都可以做到。既然有工具,我们就借助工具定量地进行分析,做为我们开始的第一步。

 

分类: 并行计算
标签:,

如需了解英特尔软件产品相关的性能和优化选项,请参阅优化注意事项.

 评论 (18)

2009年11月08日 23:41

Yanqing Wang (Intel)
Yanqing Wang (Intel)总分:
10,793
黑带
赞同,通过工具找到程序的热点是非常重要的。一方面事先可以做出一个准确的评估,是否这个程序有优化价值,大体优化后有多大的性能提升。另 一方面,在优化时,可以集中精力去做关键段,能够在较短时间内理出一个好的优化状态。如果作者再能够share一些VTune,Paral lel Amplifier方面的Tips就更加出色了。
2009年11月09日 01:05


ZWJ
恩,软件的优化很重要.
2009年11月09日 18:26


j
2009年11月09日 18:59


YIMUGANGXIAN
很好的汉化,正在为英文界面发愁
2009年11月09日 19:41


tony.chen
这是日记还是文章??
2009年11月09日 21:47


Qiuye
赞同找热点,但是不赞同所有软件都优化
现在电脑还不够快吗?四核服务器的应用也不少了……
应当根据软件的使用范围,用户的多少,数据量大小等综合因素来考虑是不是要进行优化
否则还是多投入精力保证开发进度的同时保证软件品质

现代大型软件开发都是分成好几个部分完成的,不同水平小组决定了软件的效能在各个部分肯定不同,与其后期优化不如初期投入培训,提高各个小 组水平后比软件优化效果好的多
2009年11月10日 00:53


xpoy
热点不是单指代码中的热点,根据我自己的测试来说。
只要是系统所负责的层次,也即从自己实现的最底层到最高层,每个层次都有一个本层的热区域。
单纯用软件在代码层次进行热点寻找,一直不是合适的方式啊。最起码LS所说的根据任务管理器中的情况做判断便是无法忽略的。
2009年11月10日 05:21


atlantismace
知道是知道,可整了半天Vtune还是玩不转。还找不到资料……
2009年11月10日 06:11


黄华仔
软件,是呀,要大力学会优化!我想软件工程这门课应该高校采取一种高效的措施重点抓取
2009年11月10日 16:33

zhengxi1988
zhengxi1988总分:
5
注册用户
代码优化很重要 实现同样的功能不同人写的代码效率也不一样
2009年11月10日 17:34


seuu

vtune用过一阵,程序稍复杂一点,vtune就快要挂了。

看来intel真的只适合搞搞硬件,软件你们就别掺合了。

2009年11月10日 18:09

stephaniewang
stephaniewang总分:
20
注册用户
如果前期很清楚程序哪里最耗时,那么在编写代码的时候,就应该考虑效率问题,而不是放到后期的优化工作来做。

另外,如Yanqing Wang (Intel)所说,如果作者再能够share一些VTune,Paral lel Amplifier方面的Tips就更加出色了。
2009年11月12日 04:29


chyy001
学习,有使用手册帮忙发下
2009年11月17日 23:26


cr4ck
说vtune不好用,不会用的人,可以转行了,做软件真的不适合你们

请问一下,manual可看完了?
2009年11月18日 15:52


Hogan
Support
2009年11月19日 07:28

Wu Xiaochang 吴晓昶 (Intel)
Wu Xiaochang 吴晓昶 (Intel)总分:
1,330
棕带
回复xpoy:目前Intel VTune可支持你所说的系统级别的热点查询。VTune Sampling就可以在系统范围内查询热点,包括一些设备驱动程序也可能成为系统热点。
2009年11月19日 07:34

Wu Xiaochang 吴晓昶 (Intel)
Wu Xiaochang 吴晓昶 (Intel)总分:
1,330
棕带
回复stephaniewang:同意你所说的在程序设计的时候考虑性能问题,比如对一些周知的热点如向量运算,图像处理等,需要在设计之 初有意识的考虑多线程,SSE指令优化等。而用一些工具主要还是查找一些并不为人注意的热点,比如一些循环次数较多的浮点运算函数等等。
2009年11月19日 07:37

Wu Xiaochang 吴晓昶 (Intel)
Wu Xiaochang 吴晓昶 (Intel)总分:
1,330
棕带
回复seuu:确实你说的这种情况是存在的,特别是VTune做callgraph时候要进行instrumentation,这时候会消 耗大量的内存的磁盘空间。你可以试试用vtune sample的命令行,开销相对较低,然后用图形界面来查看生成的结果。

 引用 (0)


 写评论  

欲获得技术支持,请访问软件支持页面.
姓名 (必填)*

电子邮件 (必填,不在本页面显示)*

您的 URL (可选)


评论*