在 TdwsUnit 中注册函数会产生与常规魔术函数(例如在 dwsMathComplexFunctions.pas 单元中注册的函数)相同的性能吗?
最佳答案
通常不会,因为 TdwsUnit 函数和方法的 OnEval 事件得到完全舒适和安全的处理:
- 调用参数被评估并压入堆栈
- TProgramInfo/IInfo 上下文是可访问的,因此您可以轻松地按名称访问变量,并可以轻松地调用脚本中的其他所有内容
- 您的执行受到异常框架的保护
相比之下,魔术函数什么也得不到:它们只是得到参数表达式的列表,仅此而已。没有堆栈上下文,无法轻松访问其他任何内容,因此由您来评估参数并处理所有内容。这使得它们更适合需要快速完成的简单任务。
请注意,除了 OnEval 之外,TdwsUnit 中的一些函数现在逐渐获取 OnFastEval 事件,这是声明魔术函数的另一种方法。
关于delphi - Tdws单位性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643543/