【IT168 专稿】作为程序员,谁都希望自己的软件性能优异,运行如飞。但是当我们在看到自己开发的软件像蜗牛一样慢吞吞地运行,半天没有反应的时候,我们常常会有这样一些疑问:
“我的系统都在忙些什么?CPU在干啥?”
“为什么我的软件性能表现这么低下?”
“哪里才是软件的性能瓶颈?什么代码导致了软件的性能低下?”
“软件运行到了什么状态?”
面对这些问题,程序员们都在想,要是有个软件仪表仪表,就像汽车的仪表盘一样,能够实时向我们报告系统和软件的运行状态就好了!现在,在Windows 7中,程序员们的这个梦想成为了现实。通过Windows 7所提供的Performance Counters,Event Tracing for Windows (ETW) ,Windows Management Instrumentation以及Windows Performance Toolkit,我们可以实时地获得系统和在其上运行的各种软件的性能状态信息,圆满地回答上面这些问题。利用这些丰富的状态信息,我们可以对应用程序进行诊断调试,性能分析,找到性能瓶颈,从而对其进行性能调优,给蜗牛软件插上飞的翅膀。
图1 我不是蜗牛,我是飞牛
关于性能分析的这十八般武器各有所长,这里我们先介绍性能计数器。
Performance Counters(性能计数器)
当我们在开发一些对性能期望较高的软件的时候,简单高效的性能计数器对发现软件中的性能瓶颈是很有价值的。虽然我们可以自己实现简单的性能计数器,但是,使用Windows操作系统本身所提供的Performance Counters(性能计数器),我们可以获得更多得天独厚的优势。
性能监视,是Windows NT引入的一种系统功能。从Windows NT以后,Windows操作系统总是集成了各种性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种性能对象提供了数百个性能计数器。性能对象,就是被性能计数器监视的对象,我们通常比较关心的监视对象主要有Processor、Process、Memory、TCP/UDP/IP/ICMP、Physical Disk等。性能计数器通常提供操作系统、应用程序、服务、驱动程序等的性能相关信息,以此来分析系统瓶颈和对系统及应用程序性能进行诊断和调优。除了针对操作系统本身,通过性能计数器机制,我们也可以在应用程序或者是操作系统组件中向性能监视器(Performance Monitor)报告一些与性能有关的统计信息,以此来查看软件的性能信息,对其进行诊断和调优。
在Windows 7中,微软对性能计数器做了进一步的改进和优化。例如,采用了新的2.0版本的核心模块API、采用XML定义、更加强大的性能、更高的可扩展性和鲁棒性、增加了多个系统计时器等等。同时,为了方便系统管理员进行管理,还增加了PowerShell对计时器日志文件的处理功能等等,使得性能计数器的功能大大增强。