强制二进制文件在 Windows 中使用 TCMalloc

问题描述

我有一个使用 CMake 在 Linux、MacOSX 和 Windows/Visual Studio 上构建的 C++ 应用程序。现在,我想用 malloc 透明地替换 tcmalloc 的使用,因为之前在 Linux 中的测试显示 TAT 有高达 15% 的改进。

为此,我在 CMake 文件添加了这些设置:

find_library(gperf_MEM libtcmalloc_minimal PATH "C:\\tmp\\gperf")
add_executable(MY_APP ${MY_APP_SRCS})
target_link_libraries(MY_APP ${gperf_MEM})

C:\tmp\gperf 是我 PC 中放置 libtcmalloc_minimal.dll 文件和关联的 libtcmalloc_minimal.lib 导入库的路径)。

但是,dumpbin /dependents MY_APP.exe 根本不显示 libtcmalloc_minimal.dll(因为它确实显示了我的应用程序使用的其他 DLL)。但是,使用相同的 CMakeLists.txt(当然,库搜索路径有明显变化),在 Linux/MacOSX 中,ldd/otool 确实显示了对 libtcmalloc_minimal.so/dylib

的依赖

所以我的问题是:

为了强制使用 tcmalloc 提供的 malloc 实现而不是标准实现,我在 Windows 中缺少什么?

tcmalloc documentation 讨论了一些有关直接从 Visual Studio 修改项目文件内容,但这对我来说并不是真正适用的解决方案(由于 CMake,所有构建过程都在脚本中自动化,我除了调试之外,我什至从未打开过 Visual Studio 界面。

非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)