本文提供有关改进和排查使用 Visual FoxPro 8.0 或 9.0 编写的自定义应用程序的性能问题的建议。
原始产品版本: Visual FoxPro
原始 KB 数: 2671338
现象
你有一个用 Visual FoxPro 8.0 或 9.0 编写的自定义应用程序。 用户报告性能未达到他们的预期。 本文旨在提供改进性能的建议,以及开发人员可用于识别导致性能瓶颈的代码区域。
原因
应用程序性能不佳的根本原因有很多,而且各不相同。 它们包括但不限于以下内容:
- Visual FoxPro 内存使用情况和配置
- 软件设计(低效代码)
- 防病毒软件配置
- 局域网性能
- 广域网性能
解决方法
通常,最好使用整体方法解决任何应用程序中的性能问题。 这意味着仔细检查可能影响性能的所有因素。 这些问题包括应用程序、操作系统、使用 FoxPro 可执行文件在环境中并发运行的软件以及网络。
本文中建议的故障排除框架从应用程序开始。 我们将了解影响性能的设置和设计的各种因素。 然后,查看计算机(服务器和本地工作站)上运行的软件,最后,我们检查网络。
详细信息
若要有效地排查 Visual FoxPro 自定义应用程序性能不佳的问题,需要通过了解操作系统环境和自定义应用程序的源代码。 如果第三方供应商创建了 FoxPro 应用程序,请联系他们以获取支持。 他们必须了解源代码,这对于解决性能问题可能至关重要
Visual FoxPro 内存使用情况和配置
通常可以通过在应用程序的开头(主程序中)添加一个或多个以下命令来提高 FoxPro 代码的性能:
SET REFRESH TO 0,0
SET TABLEVALIDATE TO 2
SET DELETED OFF
SYS(3054) function
Temp files directed locally
应单独测试任何更改,以最好地衡量它们对性能的影响。
软件设计(低效代码)
非优化的应用程序代码严重阻碍了应用程序性能。 但是,效率低下的代码并不总是显而易见的。 幸运的是,Visual FoxPro 8.0 和 9.0 有一个工具(覆盖率探查器)可用于运行代码并列出执行每行所需的时间。 覆盖率探查器可在开发环境中(VFP 8.0 和 9.0)以及 VFP 9.0 中编译的可执行文件中使用。
如果你的旧代码(FoxPro 2.x 过程代码)在 VFP 下运行,代码设计通常会成为阻碍性能的因素。 例如,人们可能使用一个 LOCATE 命令,而不是 SEEK 命令或 SEEK() 函数。 由于 LOCATE 命令读取表的每个记录,因此在几乎所有情况下,它自然会变慢。 覆盖率探查器可帮助你识别此类瓶颈。
另一个常见的代码相关性能问题区域是未优化的 SELECT-SQL 命令。 同样,覆盖率探查器可以确定 SELECT-SQL 命令是否占用了不分时间。 但是,它不会告诉你如何优化查询。 目标是确保 SELECT-SQL 命令尽可能最大程度地使用 Rushmore
优化。
有关详细信息,请参阅以下文章和 MSDN 链接:
防病毒软件配置
防病毒软件可能会严重影响 VFP 应用程序的性能。 虽然没有人对防病毒软件的需求提出异议,但如果软件扫描 VFP 数据文件,性能可能会受到影响。 虽然我们不是防病毒软件的所有可能配置设置的专家,但我们可以提供一些常规建议:
- 禁用自动扫描。
- 阻止防病毒软件扫描 VFP 数据文件。
- 确保拥有最新版本的防病毒软件。
局域网性能
本地局域网(LAN)速度缓慢可能会导致应用程序性能缓慢。 VFP 中没有可用于监视网络性能的函数或实用工具,但存在从环境中删除 LAN 性能的故障排除步骤,从而仅允许测试应用程序性能。 首先,可以从终端服务器计算机运行应用程序。 应用程序在终端服务器计算机的内存空间(而不是客户端操作系统)中运行,并且只有屏幕图像需要通过 LAN 传输。 其次,还可以在本地运行应用程序并消除网络。 (如果只有一个客户端遇到性能缓慢,则此选项有效。
网络问题可能比较复杂,通常涉及硬件(路由器、交换机、NIC 卡)、设置(Oplocks
) network transmission rates
和软件(操作系统版本、虚拟机)。 通常,与网络相关的问题需要涉及平台团队获取 netmon 跟踪记录并运行其他操作系统诊断工具。
广域网性能
广域网通常涵盖更大的地理区域和 LAN。 局域网(LAN)可能连接一个站点,而广域网(WAN)则可以连接位于两个州或国家/地区的站点。 随着距离的增加,应用程序性能的潜在瓶颈也随之增加。 针对 LAN 的故障排除建议同样适用于 WAN(如可能,请在终端服务器或本地测试应用程序)。 可能还需要咨询平台团队或硬件专家。