windows下mingw32使用tcmalloc

使用的mingw: i686-8.1.0-release-posix-dwarf-rt_v6-rev0

           tcmalloc: gperftools2.7覆盖gperftools2.5

           msys2:    20180531,这个看起来不重要

1)github上,官方的gperftools已经是2.7,但是没有带configure文件,github上还有另外2个非官方tcmalloc,版本2.5,其中一个带configure文件。用2.7覆盖2.5,得到最终版本。2.5的也能用,就是有另外的编译错误要处理。

2)msys里执行./configure

3)修改makefile:CFLAG/CXXFLAGS由-g -O2改为-O3 -DPERFTOOLS_DLL_DECL=

4)preamble_patcher_with_stub.cc注释掉这个保护,看起来很恐怖,但是实际运行还没出错。由天命了。谁知道更好答案请告诉我啦,谢!

     } else if (IT_RETURN == instruction_type) {
//      SIDESTEP_ASSERT(false &&
//                      "Unable to patch because function is too short");
//      return SIDESTEP_FUNCTION_TOO_SMALL;

5) tcmalloc.h里 #if @ac_cv_have_std_align_val_t@ && __cplusplus >= 201703L去掉2个@字符

6)make

7)使用项目:

      在main函数或最早运行的函数所在文件#include <tcmalloc.h>

      并且在尽可能早的地方加全局变量:void * makeTCMallocUsed = tc_malloc(4);

     编译参数加:-DPERFTOOLS_DLL_DECL=

      链接参数加:-ltcmalloc_minimal -lpsapi

附加: 确认起效方法:thread_cache.h ThreadCache::Allocate函数里加点log输出。

总体来说,内存分配密集型多线程程序,总运行时间有望加快10%

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值