win32测试Tcmalloc性能
来源:互联网 发布:linux更改用户权限 编辑:程序博客网 时间:2024/05/21 22:47
1>.编译代码库
从github上下载 gperftools 最新的库,根据介绍分别将 gperftools.sln 复制出 gperftools-vs15.sln / gperftools-vs10.sln.
编译 libtcmalloc_minimal project.得到 Relase/libtcmalloc_minimal.dll 和 libtcmalloc_minimal.lib
放到: D:\...\stack-lang-cpp\Tcmalloc\lib\vs15_x86
2>.一些bug解决。
log2 找不到,就定义一个
inline double log2( double n ) { // log(n)/log(2) is log2. return log( n ) / log( 2.0 ); }
std::max()/std::min()失败,就改成强制函数调用,避免当成宏扩展:
#include <algorithm>(std::max)(...)(std::min)(...)
.... 自行解决
2>.配置路径:
VC++目录: D:\...\stack-lang-cpp\Tcmalloc\lib\vs15_x86,主要是 搜索到 libtcmalloc_minimal.lib
其中path配置到: D:\...\stack-lang-cpp\Tcmalloc\lib\vs15_x86 , 主要是搜索到 libtcmalloc_minimal.dll
3>.测试
建立自动符号链接cpp
tcmalloc-include.cpp#pragma comment(lib , "libtcmalloc_minimal")#pragma comment(linker, "/include:__tcmalloc")
测试Demo:
tcmalloc-test.cpp#include <laok/job_runner/include.h>/************************************************************************//* *//************************************************************************/#define COUNT 1000000static void test_func(){ for (size_t i = 0; i < COUNT; ++i) { int * pInt = (int*)malloc(i * sizeof(int)); *pInt = i; free(pInt); }}JOB_DEFINE(tcmalloc , test){ std::clock_t start = std::clock(); test_func(); std::clock_t end = std::clock(); PS( end - start );}
运行方式:
1.包含tcmalloc-include.cpp
测试时间:
=====<tcmalloc_test>begin[end - start]:[116]=====<tcmalloc_test>end [State:OK] [Times:0.117s]
2.不包含tcmalloc-include.cpp
测试时间
=====<tcmalloc_test>begin[end - start]:[2142]=====<tcmalloc_test>end [State:OK] [Times:2.144s]
由此可见,性能还是有点差异,尤其是对 大量小对象的不均匀分配。
- win32测试Tcmalloc性能
- tcmalloc win32原理
- redis + tcmalloc提升性能
- tcmalloc简单测试
- 使用Tcmalloc的性能测试结果报告,比malloc有大幅度提高
- 使用tcmalloc提升mysql性能
- 利用TCMalloc优化nginx性能
- 使用tcmalloc提升mysql性能
- TCMalloc
- TCMalloc
- TCMalloc
- TCMalloc
- TCMalloc
- TCMalloc
- tcmalloc
- tcmalloc
- Tcmalloc
- 使用GooglePerformanceTools--tcmalloc提高MySQL服务器性能
- C/C++关键字解析
- navicat cannot create file 文件名、目录名或卷标语法不正确
- 驱动程序的 SQLAllocHandle on SQL_HANDLE_ENV 失败
- 1977!
- JQuery和JS怎样实现淘宝购物车的添加和删除?
- win32测试Tcmalloc性能
- springmvc4-hibernate二级缓存应用
- CountVectorizer和TfidfVectorizer注意的地方
- screen 命令
- HDU-2017"百度之星"程序设计大赛-复赛-1003-Pokémon GO
- 微信支付申请不了找黑河马解决
- WarGames-Natas(16)
- 基本线程机制
- 概率DP[NOIP2016D2T3换教室]