【发布时间】:2015-10-31 09:55:42
【问题描述】:
我已将 uses FastMM 放在 EXE 的 dpr 文件中,该文件使用 LoadLibrary 调用 DLL。所以我的问题是我应该把 uses FastMM 放在 DLL dpr 项目文件中吗?
我只想通过简单地使用更好的内存管理器来最大化性能增益,例如多线程应用程序中的 FastMM。我也在寻找替代 MM,例如 ScaleMM。 EXE 由 .NET 应用程序调用,Delphi EXE 调用执行一些浮点计算的 DLL(实际上是 COM+ dll)
我今天下午试用了 ScaleMM,结果发现 ScaleMM 使用的内存比 FastMM4 多。如果使用 ScaleMM,两个单元测试会因为“内存不足”而失败。但是,使用 FastMM4(4.991 版)则没有问题。
除了“内存不足”错误之外,我没有注意到使用 ScaleMM 的明显速度提升。因此我决定回到 FastMM4。
我的问题是,在 EXE 和 DLL(选项、ShareMMIfLibrary 等)中同时使用 [共享内存管理器] FastMM4 有什么好处?
【问题讨论】:
-
这取决于你打算用 DLL 做什么。我认为没有人可以自信地给你一个是或否的答案。您必须提供更多详细信息。
-
FastMM 在多线程场景中表现非常糟糕。而且 Delphi 已经使用了 FastMM,因此添加 FastMM 不会在性能方面发生任何变化。如果堆分配影响性能,最好的解决方案是避免在热点函数中分配堆外。
-
首先避免堆分配,您将获得更好的结果
-
你为什么没有编辑问题?
-
@DavidHeffernan 重新编辑
标签: delphi