程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB中OLE調用的優化方法

VB中OLE調用的優化方法

編輯:VB綜合教程
VB5.0中大量使用OLE,對象的正確使用對於開發一個高效的應用程序是非常關鍵的。因此,筆者想談一談OLE調用的優化。
  一、利用WITH語句減少重復調用。
  為了設置單個對象的多個特性,可以使用WITHENDWITH減少激活引用鏈設置特性的次數,在這種情況下,甚至不需要定義對象類型的臨時對象。例如:DBEngine.WorkSpace(0).Databases(0).
  RecordSet.Fields(0).Name="jx"
  DBEngine.WorkSpace(0).Databases(0).RecordSet.Fields(0).Height="1.75"
  可以這樣賦值:WITHDBEngine.WorkSpace(0).Databases(0)
  .RecordSet.Fields(0).Name="jx"
  .Height="1.75"
  ENDWITH
  很明顯,減少了執行賦值所必須做的OLE對象查詢的次數。
  二、使用可以提供的最特定的對象。
  在VB中訪問任何對象的模型通常要求重復使用OBJECT.PROPERTY語句,那麼這個引用鏈將變得很長。
  DBEngine.WorkSpace(0).Databases(0).RecordSet.Fields(0).Name
  在上面這個序列中每個點代表VB為了訪問下一個元素要求的OLE查找。如果將這樣一條語句放到循環中,會產生大量不必要的查找:
  例如ForI%=0TODBEngine.WorkSpace(0).Databases(0).R
  ecordSet.Field.Count-1
  PrintDBEngine.WorkSpace(0).Databases(0).RecordSet.Fi
  elds(I%).Name
  Next
  如果通過使用可用的最特定的對象類型,可以大大減少同一個
  循環的開銷。程序變換如下:
  DIMXASFields
  DIMYASField
  SETX=DBEngine.WorkSpace(0).Databases(0).RecordSet.Fi
  elds(0)
  FOREACHYINX
  PrintF.Name
  Next
  三、最小化跨進程OLE調用。
  OLEAutomation對程序內的對象的調用總是比跨進程調用要快,如果處理可以在一個程序內完成,就會比調用另一個應用程序快。如果進行跨進程OLEAutomation,一個硬輸入的(DIMXASSPECIFICTYPE)而不是“ASOBJECT”的對象會大大減少開銷,因為只需一個跨進程調用。
  四、使用進程內而不是進程外的OLE服務器。進程外OLE服務器(使用MAKEEXE建立的OLE服務器)比進程內OLE服務器(使用MAKEDLL建立的OLE服務器)慢得多。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved