在TdwsUnit中注册函数会产生与常规魔术函数相同的性能,例如在dwsMathComplexFunctions.pas单元中注册的函数吗? 最佳答案 通常不会,因为TdwsUnit函数和方法的OnEval事件变得非常舒适&安全治疗:
>评估调用参数并将其推送到堆栈上
>可以访问TProgramInfo / IInfo上下文,以便您可以按名称轻松访问变量,并可以依次调用脚本中的所有其他内容
>您的执行受异常框架保护
相比之下,魔术函数没有得到这些:它们只是得到参数的表达式列表,而这就是全部.没有堆栈上下文,不能轻易访问任何其他内容,因此您需要评估参数并处理所有内容.这使得它们更适合需要快速完成的简单任务.
请注意,除了OnEval之外,TdwsUnit中的一些函数现在正在逐渐获得OnFastEval事件,这是一种声明魔术函数的替代方法.