john_he 发表于 2008-1-17 01:47:45

怎么统计一个程序里各部分的消耗?

嘛,如题……VC2003的

主要是统计各语句被调用的次数,最好能有直观的图形(直方图之类的)。

背景就是为一个引擎添加了音频部分之后FPS剧降,调查原因……

Miliardo 发表于 2008-1-17 10:49:04

VC不太清楚,gcc有个Profiler= v =

john_he 发表于 2008-1-17 11:26:17

Profiler介绍下?
嘛,虽然是VC开发的东西,但也是可以用GCC编译的……

duzhi5368 发表于 2008-1-17 17:34:39

自己在重要函数中加一个static引用计数,Printf出来不可以么
实际上,有些工具难配置的话还不如土方法.

Miliardo 发表于 2008-1-17 17:58:45

gprof其实很简单
gcc编译的时候加一个-pg选项,然后运行。
运行结束后用gprof生成报表就行

lw 发表于 2008-1-17 20:49:55

VC当然配备了性能统计了-

不过对于明显的迟缓,在通常可以用打印时间来衡量- -~

john_he 发表于 2008-1-17 20:55:20

自己在重要函数中加一个static引用计数,Printf出来不可以么
实际上,有些工具难配置的话还不如土方法.
这个方法也想过,不过要统计全个程序的数据,用printf很麻烦……而且因为是游戏引擎,printf本身的消耗也是不能忽略的……

本来VC6是有profiler的,不知道为什么到2003之后就没了,不知道M$怎么想的……

duzhi5368 发表于 2008-1-18 09:43:11

#ifdef _DEBUG
#define PRINTF printf
#else
#define PRINTF
#endif

另外如5楼所说,每个常用函数头尾还可以加入时间计算,以获得该函数计算运行时间.

rednaxela 发表于 2008-1-19 11:58:44

VC6的profiler在这里有相关链接: http://msdn2.microsoft.com/en-us/library/aa269512.aspx
VC2003是比较奇怪...VC7和VC7.1似乎都没什么好的内建profiling工具.囧大有兴趣的话可以试试一些外部profilier,例如说这个 http://www.automatedqa.com/products/aqtime/
VC8也可以用AQTime来profile

主要是换上.NET平台之后,VS里集成的profiler似乎只有针对managed code的是特别好用的了...
嘛反正我用ICC的profiler...

john_he 发表于 2008-1-20 13:58:01

连VS71里集成了profiler都不知道……主要是为省空间最小安装了……
页: [1]
查看完整版本: 怎么统计一个程序里各部分的消耗?