delphi - Delphi COM 对象中的早期绑定(bind)和后期绑定(bind)在性能方面哪个更好

标签 delphi com

在delphi中,如果要创建COM对象,可以通过两种方式来实现,

第一个是早期绑定(bind),例如

uses
  MSScriptControl_TLB; // MS Script Control

var
  obj: IScriptControl;
begin
  obj := CreateOleObject('ScriptControl') as IScriptControl;
  .. 
  ..
  obj.ExecuteStatement('Msgbox 1') 
end;

或者,您可以按照以下方式进行(后期绑定(bind))

var
  obj: OleVariant;

begin
  obj := CreateOleObject('ScriptControl') ;
  obj.ExecuteStatement('Msgbox 1');
end;

哪一个在性能方面更好?

最佳答案

Which one is better in terms of performance?

早类比晚类快。后期绑定(bind)方法调度涉及以下内容:

  1. 从名称查找入口点。
  2. 组装要传递给方法的参数,并执行任何必要的类型转换。
  3. 调用函数。
  4. 解码任何输出参数和返回值。

对于早期绑定(bind)调度来说,其中许多步骤根本不存在。

当然,如果该函数做了任何重要的事情,则方法分派(dispatch)期间的性能差异很可能无法检测到。

关于delphi - Delphi COM 对象中的早期绑定(bind)和后期绑定(bind)在性能方面哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383304/

相关文章:

c# - 如何从 WebBrowser 控件获取 XML (RAW/SOURCE)

c# - 使用 COM Interop 将对象从 C# 传递到 VBA

com - 有关COM .net程序集,重排,dll,tlb和guids的几个简短问题

c++ - 如何从非托管 C++ 引用 com exe?

c# - ComInterfaceType 属性是否应该不是 InterfaceIsDual

c++ - 在非 Microsoft 平台上使用组件对象模型 (COM)

delphi - 将资源中的 EXE 文件执行到内存中

Delphi XE7在编辑框中使用小数除法

delphi - delphi SDI中创建新表单时传递参数

delphi - 记录类型的前向声明