龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

VB中OLE调用的优化方法

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
VB5.0中大量使用OLE,对象的正确使用对于开发一个高效的应用程序是非常关键的。因此,笔者想谈一谈OLE调用的优化。 一、利用WITH语句减少重复调用。 为了设置单个对象的多个特性,可
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服务器)慢得多。->

精彩图集

赞助商链接