4

dwsMathComplexFunctions.pas在 TdwsUnit 中注册函数会产生与在单元中注册的常规魔术函数相同的性能吗?

4

1 回答 1

2

通常不会,因为 TdwsUnit 函数和方法的 OnEval 事件得到了完全舒适和安全的处理:

  • 调用参数被评估并压入堆栈
  • 可以访问 TProgramInfo/IInfo 上下文,因此您可以轻松地按名称访问变量,并且可以反过来轻松地调用脚本中的其他所有内容
  • 您的执行受到异常框架的保护

相比之下,魔术函数什么也得不到:它们只是得到参数表达式的列表,仅此而已。没有堆栈上下文,无法轻松访问其他任何内容,因此由您来评估参数并处理所有内容。这使它们更适合需要快速完成的简单任务。

请注意,除了 OnEval 之外,TdwsUnit 中的一些函数现在正在逐步获取 OnFastEval 事件,这是声明魔术函数的另一种方式。

于 2013-03-27T07:35:34.660 回答