怎么统计一个程序里各部分的消耗?
嘛,如题……VC2003的主要是统计各语句被调用的次数,最好能有直观的图形(直方图之类的)。
背景就是为一个引擎添加了音频部分之后FPS剧降,调查原因…… VC不太清楚,gcc有个Profiler= v = Profiler介绍下?
嘛,虽然是VC开发的东西,但也是可以用GCC编译的…… 自己在重要函数中加一个static引用计数,Printf出来不可以么
实际上,有些工具难配置的话还不如土方法. gprof其实很简单
gcc编译的时候加一个-pg选项,然后运行。
运行结束后用gprof生成报表就行 VC当然配备了性能统计了-
不过对于明显的迟缓,在通常可以用打印时间来衡量- -~ 自己在重要函数中加一个static引用计数,Printf出来不可以么
实际上,有些工具难配置的话还不如土方法.
这个方法也想过,不过要统计全个程序的数据,用printf很麻烦……而且因为是游戏引擎,printf本身的消耗也是不能忽略的……
本来VC6是有profiler的,不知道为什么到2003之后就没了,不知道M$怎么想的…… #ifdef _DEBUG
#define PRINTF printf
#else
#define PRINTF
#endif
另外如5楼所说,每个常用函数头尾还可以加入时间计算,以获得该函数计算运行时间. 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... 连VS71里集成了profiler都不知道……主要是为省空间最小安装了……
页:
[1]