首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 15692|回復(fù): 1
上一主題 下一主題
[教程]

android源碼中ccache使用及原理簡介

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-3-7 00:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式 | 來自河南
我們可以使用編譯器高速緩存工具complier cache(ccache)來加快編譯速度. 如果你經(jīng)?!眒ake clean” ,
ccache能大大縮短再次編譯的時間
可以通過設(shè)置以下命令來啟用ccache??梢詫⒃摥h(huán)境變量寫入.bashrc或類似文件,避免每次都設(shè)置。
$ export USE_CCACHE=1
默認cache存儲在~/.ccache. 可以使用下列命令來設(shè)置路徑
$ export CCACHE_DIR=<path-to-your-cache-directory>
推薦的cache大小為50-100GB. 可以使用下列命令來設(shè)置cache size
$ prebuilt/linux-x86/ccache/ccache -M 50G  (工程目錄下運行)
該設(shè)置會永久存儲在CCACHE_DIR
可以使用以下命令來查看ccache的運行狀況:
$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s   (工程目錄下運行)
目前在我們的項目中已經(jīng)設(shè)置有ccache,但cache size 偏小,可以重新設(shè)置一下cache size即可。
原理簡介:
ccache 工具通過將頭文件高速緩存到源文件之中而改進了構(gòu)建性能,因而通過減少每一步編譯時添加頭文件所需要的時間而提高了構(gòu)建速度
在標準的編譯過程中,在 UNIX 下使用 C/C++ 開發(fā)應(yīng)用程序通常需要用到一個編譯器(如 gcc)以及一個編譯工具,比如 make。make 和所有的 C 編譯器的問題在于 C 預(yù)處理程序(preprocessor)和頭文件的工作方式。觀察一個典型的 C 源文件,您會發(fā)現(xiàn)其中有很多由 #include 所引用的各種頭文件。
每一次編譯一個文件時,C 預(yù)處理程序(cpp)都會解析并引入每個頭文件以及這些頭文件引用到的任何文件。通過對內(nèi)容進行解析,ccp 可以將一個相當基本的 1-KB 大小的源文件轉(zhuǎn)化為一個 8-KB 大小的源文件,在這個過程中,會合并入幾十個甚至幾百個頭文件。在典型的開發(fā)項目中,有很多與項目相關(guān)的頭文件可能會在不同的源文件中多次被引入,而且每個頭文件本身也可能引用很多其他頭文件。
在典型的編譯過程中,make 工具只編譯自上次編譯后發(fā)生修改的文件,這樣就在很大程度上簡化了編譯過程。
make 將必須被編譯的文件限制在經(jīng)過修改的那些源文件范圍之內(nèi),但是即使是使用 make,仍然有相當可觀的浪費。每一次編譯項目時,源文件在編譯為匯編語言和最終的機器代碼之前,都要通過 cpp 進行解析。對每一個文件來說,每一次可能都要重新解析頭文件。從編譯的全過程來看,您最后可能多次解析了相同的頭文件,浪費了處理器周期,更重要的是浪費了開發(fā)者的時間,因為他們要等待這一過程的完成。在一個團隊中,這一影響可能會更為明顯,
因為多名開發(fā)者可能都會反復(fù)多次重復(fù)這一過程,在某一天甚至可能會同時進行。
ccache(“compiler cache”的縮寫)工具會高速緩存編譯生成的信息,并在編譯的特定部分使用高速緩存的信息,比如頭文件,這樣就節(jié)省了通常使用 cpp 解析這些信息所需要的時間。如果您編譯清單 2 中的文件,假定 foobar.h 中包含對其他頭文件的引用,ccache 會用那個文件的 cpp-parsed 版本來取代 include 聲明。就那么簡單。不是真正去讀取、理解并解釋其內(nèi)容,ccache 只是將最終的文本拷貝到文件中,使得它可以立即被編譯。
清單 2. 源文件內(nèi)容
#include “foobar.h”
void main


上一篇:Android系統(tǒng)recovery刷機腳本updater-script語法說明 ...
下一篇:尋找第三方設(shè)計公司(智能電視)
沙發(fā)
發(fā)表于 2016-3-10 19:45 | 只看該作者 | 來自山東
很給力,ZNDS有你更精彩!
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-12-22 16:02 , Processed in 0.064968 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表