1. 程式人生 > >TcMalloc的介紹以及Windows下安裝使用

TcMalloc的介紹以及Windows下安裝使用

介紹:

  TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一個記憶體管理庫,與標準的glibc庫中malloc相比,TcMalloc在記憶體分配的效率和速度上要高很多,可以提升高併發情況下的效能,降低系統的負載。

  TcMalloc比glibc的malloc具有更高的效率。如在主頻為2.84GH的pc上,Glibc的malloc需要使用300ns的時間來執行malloc/free對,而tcmalloc只需要50ns來完成相同的操作(資料來自官方文件)。

  TcMalloc使用執行緒記憶體池的方法,小物件(<=32K)是在記憶體池中進行分配,使用分配較多的記憶體空間來優化分配時間,並定時進行垃圾回收操作。而大物件(>32K)則直接在全域性控制堆中分配。Tcmalloc可以有效減小多執行緒間的鎖爭用問題,對於小物件,甚至可以實現0爭用。

Windows下安裝使用:

gperftools可以在VC++ 7.1(Visual Studio 2003)或以後的版本中執行。

  此壓縮包內含README_windows.txt說明文件,該文件包含詳細使用教程。

  開啟並編譯gperftools-2.1目錄下的gperftools.sln,編譯完成後會生成多個用於測試的exe檔案,你可以手動執行這些檔案檢測在你的機子上是否全部通過。  It will also create two binaries, nm-pdb and addr2line-pdb, which you should install in the same directory you install the 'pprof' perl script.(說明文件中的內容,筆者沒有碰這兩個檔案)

  編譯通過後,在Release/Debug目錄下生成libtcmalloc_minimal[-debug].dll和對應的lib檔案。使用這兩個檔案即可實現對其他工程中malloc/new的替換。

  筆者使用的環境是VS2005,要使用此DLL,你需要新增以下行到工程中:"libtcmalloc_minimal.lib" /INCLUDE:"__tcmalloc",設定如下圖:

直觀但不全面的測試:   
#include <Windows.h> 
#include <iostream>

#define COUNT 1000*1000
void func()
{
    size_t j 
= 0; for (size_t i = 0; i < COUNT; ++i) { if (j > 1001) { j = 0; } int * pInt = (int*)malloc(i * sizeof(int)); free(pInt); } } void main() { DWORD tStart, tEnd; tStart = timeGetTime(); func(); tEnd = timeGetTime(); printf("%lu\n", tEnd - tStart); }

  對於以上程式碼,在不使用tcmalloc(將__tcmalloc標誌去掉)時,執行時間需要10000多毫秒(實測14846),而在使用tcmalloc後,執行時間僅需100多毫秒(實測151)。

留意:   另外,對於Windows,筆者在gperftools-2.1目錄下的INSTALL檔案中發現如下需要留意的文字,如由需要,請自行到INSTALL檔案中查詢並詳細閱讀:

** Windows (MSVC, Cygwin, and MinGW):

Work on Windows is rather preliminary: we haven't found a good way
to get stack traces in release mode on windows (that is, when FPO
is enabled), so the heap profiling may not be reliable in that
case. Also, heap-checking and CPU profiling do not yet work at
all. But as in other ports, the basic tcmalloc library
functionality, overriding malloc and new and such (and even
windows-specific functions like _aligned_malloc!), is working fine,
at least with VC++ 7.1 (Visual Studio 2003) through VC++ 10.0,
in both debug and release modes. See README.windows for
instructions on how to install on Windows using Visual Studio.

Edit by SunboyL

相關推薦

TcMalloc介紹以及Windows安裝使用

介紹:   TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一個記憶體管理庫,與標準的glibc庫中malloc相比,TcMalloc在記憶體分配的效率和速度上要高很多,可以提升高併發情況下的效能,降低系統的負載。   TcMalloc比glibc

windows安裝DB2數據庫以及使用Aqua Data Studio鏈接數據庫

left 目錄結構 http div 數據庫服務 nts 連接 鏈接 安裝文件 本文只是作為自己的心得體會,不具有一般性! 1、其實安裝DB2數據庫還是比較簡單的,一般都是直接下一步下一步就可以了,只是有些地方需要註意。我安裝的DB2數據庫版本如下圖所示: 2、拿到數據庫

[Python爬蟲] 在Windows安裝PhantomJS和CasperJS及入門介紹(上)

支持 包括 load node webpage 函數 cas examples ctr 最近在使用Python爬取網頁內容時,總是遇到JS臨時加載、動態獲取網頁信息的困難。例如爬取CSDN下載資源評論、搜狐圖片中的“原圖”等,此時嘗試學習Phantomjs和

windows安裝redis 以及phpredis的擴展 (windows redis php&php7)

com sts 刪除 connect 移動 技術分享 base getopt 操作 一、工具準備 1. redis for windows 下載 https://github.com/MSOpenTech/redis 2. PHP擴展下載 http://pecl.php

windows 安裝python以及scrapy 環境

Scrapy入門教程  地址:https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html 1---安裝scrapy: 使用pip命令 pip install scrapy 驗證安裝:cmd輸入scra

windows安裝nodejs以及python2502,2503解決方案

筆者國慶節回老家去了 裝家裡的舊電腦的時候遇到的問題 特此記錄解決方案 1. 2053和2052為什麼會出現 出現這個提示的時候,是在程式安裝步驟 到達copy new file的時候 進入下一步進行報錯,可以推測出應該是軟體包在安裝的時候,解壓縮部署核心檔案的時候出錯。 2

Windows安裝Composer 以及使用Composer安裝laravel和lumen指定版本

1、Composer下載地址 https://getcomposer.org/Composer-Setup.exe 安裝完成 2、安裝方式 (1)使用 Composer 管理依賴安裝 開啟cmd : 輸入composer global require "laravel/

python相關軟體安裝流程圖解——Windows安裝Redis以及視覺化工具——Redis-x64-3.2.100——redis-desktop-manager-0.9.3.817

  https://www.2cto.com/database/201708/666191.html https://github.com/MicrosoftArchive/redis/releases          

Windows安裝Redis以及視覺化工具

Redis官網推薦使用Linux安裝redis。所以Linux安裝redis來說超級簡單。只需一行命令既可。這裡就不做過多的解釋。 一、首先下載redis的Windows版本 官網還沒有Windows版本的,只能在這個GitHub上下載https://github.com/

Windows安裝VScode,並使用,以及中文配置

首先明確一點,VScode是開發Go應用的基礎編輯器,是Microsoft(微軟的產品),可以執行在Windows、Linux、Mac Os X上使用,預設提供Go語言語法高亮,安裝Go語言外掛後,就可以智慧提示,編譯等執行功能,   當然市場上還有很多其他GO語言的開發工具,例如常見的Ec

Windows安裝ElasticSearch6.3.1以及ElasticSearch6.3.1的Head外掛

es5以上版本安裝head需要安裝node和grunt(之前的直接用plugin命令即可安裝)安裝ElasticSearch6.3.1一、安裝jdk8(jdk7不可以)二、安裝ElasticSearch6.3.12,開啟ElasticSearch 服務將zip檔案解壓到E盤,

Lua——windows安裝和使用LuaJIT測試以及圖例

1.準備 1) 下載LuaJIT原始碼 2) 確保你的機器上安裝了visual studio 2.編譯 方法一:其實這些快捷方式一直都存在,目錄是%systemroot%/Program Files (x86)/Microsoft Visual Studio 12.0/Commo

Windows安裝MySQL詳細步驟+圖解 以及常見錯誤和注意事項

MySQL的的安裝圖產品產品解   一,MYSQL的安裝 如圖1所示,開啟下載的的MySQL的安裝檔案mysql-5.5.27-win32.zip,雙擊解壓縮,執行的的“Setup.exe”。   2,選擇安裝型別,有“典型(預設)”,“完成(完全)”,

通用方法 windows安裝Git +Gerrit環境以及配置提交日誌模板

1. 賬號啟用 2. 直接搜git for windows下載安裝客戶端 3. ssh key生成         執行$ ssh-keygen -C [email protected],完成後,會生成公鑰檔案id_rsa.pub和私鑰檔案id_rsa。 4

windows安裝redis以及redis擴充套件,設定redis為windows自啟服務

我自己經過測試後,發現有些網上的教程挺坑。 其實只要安裝完redis後,擴充套件需要注意一下,extension=php_igbinary.dll 可以不要擴充套件,要不然會出問題。暫時不知道為什麼會這樣。估計是PHP有的版本已經有這個了。 windows下安裝reids 啟動redis服務:在red

windows安裝scikit learn以及python的各種包

每次安裝都是不完整,這次配置又出問題,於是決定從頭開始安裝。 首先,windows7 32位的系統。 首先安裝python2.7,官網下載的,安裝路徑是c:\python2.7 因為之前雖然安裝的不完整,但是我已經配置好環境變數等引數了。具體Path新增 C:\Pyth

Docker Windows安裝的一些注意以及常用命令和引數

Windows下的安裝注意: 選擇完整安裝,其中MSYS-git UNIX tools是在Windows下執行Linux命令的工具 選擇Reboot Windows at end of ins

windows安裝pip、easy_install以及pygame、PyCharm安裝pygame

1.window下安裝pip到python官網下載3.x的直譯器,並在Windows作業系統中進行安裝,並配置環境變數:我的電腦 -> 右鍵屬性 -> 左側高階系統設定 -> 環境變數

Python同時安裝py2.x和py3.x,以及Windowsvirtualenv和flask的安裝

1.py2.x和py3.x的安裝 由於學習需要或者個人折騰,可能會在同一臺電腦上面安裝py2.x和py3.x兩個版本。下面就開始介紹如何安裝,還有pip的使用。 1.安裝好py2.x和py3.x到本機,並配置好環境變數,關於環境變數,可以在安裝時選擇add

windows安裝python&pip

令行 download cmd命令行 python 安裝包 配置環境變量 win pip安裝 安裝python 1.在https://www.python.org/downloads/下載相應的python安裝包, 解壓安裝,配置環境變量. 2.下載pip安裝包:https