【发布时间】:2021-10-02 12:02:10
【问题描述】:
我经常会从其他 DLL 调用两个 DLL 函数,并且我需要将这些函数分开,因为我也在不同的地方调用它们。但由于我经常将它们一起调用,是否有必要创建另一个 DLL 函数来调用这两个函数,并在我需要同时调用它们的地方调用它?
【问题讨论】:
-
没有开销。在模块中调用函数的成本与在 dll 中调用函数的成本相同。
标签: performance delphi dll
我经常会从其他 DLL 调用两个 DLL 函数,并且我需要将这些函数分开,因为我也在不同的地方调用它们。但由于我经常将它们一起调用,是否有必要创建另一个 DLL 函数来调用这两个函数,并在我需要同时调用它们的地方调用它?
【问题讨论】:
标签: performance delphi dll
可能,是的,因为 内联。在现代处理器上调用 DLL 函数相对便宜(尤其是当它经常被调用并且缓存是热的时)。但是,如果该功能持续很短的时间,它仍然会增加大量开销。在同一个模块中添加一个调用另外两个的 DLL 函数可以防止函数调用。在某些情况下,内联有助于编译器进一步优化代码。例如,常量传播通常是在这种情况下非常重要的优化。话虽如此,如果这两个功能彼此不相关,则收益应该很小。
请注意,这是一种微优化,在大多数情况下,它的好处应该相对较小。如果 DLL 调用的频率非常高,那么重新设计代码应该会更好(例如,通常通过处理数据块,使用优化的 JIT)。
【讨论】: