VS Profiler使用中的两个常见问题
1)sampling模式和instrumentation模式的区别
两者的区别:
在sampling模式中,profiler以固定的间隔对运行中的程序进行采样,根据采样结果统计出程序中各个部分的开销。
在instrumentation模式中,profiler对运行中的程序所执行的每一个指令都进行记录,最后根据这份记录生成程序中各个部分的开销。
在实际使用中:
sampling模式速度快,记录产生的数据量小,但是统计结果并不十分精确,适合于对程序全局性能进行初步的分析,找出程序瓶颈大致的“区间”。
instrumentation模式能精确记录程序各个部分的开销,但是速度慢,记录产生的数据量大,适合于对程序局部进行精细分析,精确定位瓶颈位置。
2)inclusive和exclusive的区别
不论是sampling和instrumentation模式,统计结果均包含inclusive项和exclusive项。下面以函数执行时间为例。
函数执行时间的inclusive项表示从进入该函数到退出该函数总共花费的时间,既包含了所调用的函数的inclusive执行时间。
函数执行时间的exclusive项仅仅包含函数自身的语句执行所花费的时间,并不包含其所调用的函数的时间开销。