编辑: GXB156399820 | 2013-04-07 |
9 1.2. ? 第8章描述如何利用我们对立体游戏的支持.精心编写的立体游戏不仅生动,而 且在视觉上比非立体游戏具有更强的立体效果. ? 第9章是 NVIDIA 性能工具的概述. ? 第10 章同时用内部代号和正式产品名称列出了我们的图形芯片,以便参考. 发送反馈意见 如果您对本文档有任何评论或建议,请发送至:[email protected]. Chapter 2.第2章如何优化应用程序 本章将讲述发现并解决图形软件的性能瓶颈的典型步骤. 2.1. 进行准确的测试 许多方便的工具能够在您测试性能的同时为您提供可靠的性能测试指 标.例如,NVPerfHUD的黄线(详情请见NVPerfHUD文档)测试每帧 的总毫秒数,并显示当前的帧速率. 有效的性能对比方法: ? 确保应用程序运行正常.例如,当软件和微软的 DirectX Debug 同时 运行时,不应产生任何错误或警告. ? 确保测试环境有效.即确保您运行的是应用程序的发布版本与动态 链接库(DLL),以及正式发布的最新版本 DirectX. ? 所有应用程序都要使用发布版本(而非调试版本). ? 确保所有显示设置正确无误.即所有显示设置都应保持默认值.各 向异性过滤和反锯齿设置会明显影响性能. ? 禁止垂直同步.这能确保帧速率不被显示器刷新率所限制. ? 在目标硬件上运行.如果您想知道一个明确的硬件设置是否能正常 运行,请确保系统使用了恰当的 CPU、图形芯片(GPU)、并有 足够的内存.当您从低端系统转移到高端系统时,瓶颈会显著改 变. NVIDIA 图形芯片编程指南
11 2.2. 发现瓶颈 2.2.1. 了解瓶颈 在此,假设我们已确定了一个性能较差的情况,此时我们需要做的是找 出性能瓶颈.瓶颈通常随着场景内容而转移.瓶颈还经常在单帧的过程 中转移,从而使问题变得更为复杂.因此, 发现瓶颈 意味着 找出 这个场景中对性能限制最大的瓶颈 .消除这种瓶颈就能获得最大的性 能优化空间. 图1. 潜在的瓶颈 在理想状态下,不会存在任何瓶颈――CPU、AGP 总线和 GPU 数据传 输通道的各个阶段都顺利的加载完成(请参见图 1).然而,在实际 中,应用程序无法达到这种状态――总有什么问题会抑制最佳性能的发 挥. 瓶颈可能存在于 CPU 或GPU 中.NVPerfHUD 的绿线(请参见 9.1 节 了解更多有关 NVPerfHUD 的详情)能显示在一帧中 GPU 闲置多少毫 秒.如果 GPU 每帧闲置一毫秒,这表明应用程序至少部分地受 CPU 的限制.如果 GPU 在帧处理中的大部分时间都是闲置的,或在所有的 帧中均闲置一毫秒,且应用程序没有与 CPU 和GPU 同步,这说明 如何优化应用程序 CPU 是此时最大的瓶颈.提高 GPU 的性能只会增加 GPU 的闲置时 间. 2.2.2. 基本测试 您可以进行几个简单的测试来确定应用程序的瓶颈.您不需要使用任何 特殊工具或驱动程序,因此这些测试很容易进行. ? 停止文件存取.任何硬盘数据的存取都将影响帧速率.这种情况很 容易发现――只需检查电脑的硬盘指示灯,或使用 Windows 的性 能管理工具、AMD 的编码分析家(CodeAnalyst)、 (http://www.amd.com/us- en/Processors/DevelopWithAMD/0,,
30_2252_3604,00.html)、或Intel 的Vtune (http://www.intel.com/software/products/vtune/)来检 查磁盘运行管理信号即可.注意,硬盘数据存取也可能是由于内存 交换引起的,特别是当您的软件占用大量内存时,也会引起硬盘数 据存取. ? 以不同的速度在 CPU 上运行同一 GPU.您需要找到一个能够调节 (如:down-clock)CPU 速度的系统 BIOS,这样才能在同一个系 统进行测试.如果帧速率根据 CPU 的速度而做相应地改变,这说 明您的应用程序受到 CPU 的限制. ? 降低 GPU 的核心时钟(core clock)频率.您可以通过常用的工 具(例如 Coolbits[请参见第