程序开发是分阶段的,在完成功能开发和测试后,研发人员还需要获取程序的性能数据,并与竞品进行比较。其中,互联网程序有几个比较重要的指标:网络传输时延、网络传输流量、程序的CPU使用率以及程序的内存占用量等;对于网络相关性能指标,网络已经有较多的工具可以用于分析,就不再阐述,而本文重点关注CPU使用率和内存占用量。
在Windows平台上,微软的开发包中(Micosoft Windows SDK)提供性能分析工具Windows Performance Analyzer(下面简称WPA),它可以获取指定程序的性能数据,并通过图形的形式将其展示出来。其中,该工具对WIn7和vista支持的比较好,就是可以分析更多的指标。
ETW(Event Tracing Windows)提供了WPA的基础功能。ETW架构如图所示:
ETW有三种组件构成:
- 控制器(Controller):负责启动和停止事件跟踪会话,以及打开提供者;
- 提供者(Provider):返回指定事件;
- 消费者(Consumer):分析提供者产生的数据。
WPA使用原则:
- 打开提供者,进行事件跟踪;
- 从指定的提供者收集事件数据;