本文提供改善和進行疑難排解,以便解決 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 的已編譯可執行檔中。
如果您有在 VFP 下執行的舊版 (FoxPro 2.x 程式代碼),程式代碼設計通常會成為阻礙效能的因素。 例如,人們可能會使用 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(如果可能,可在終端機伺服器或本地測試應用程式)。 可能也需要與平臺小組或硬體專家進行諮詢。