如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度
1、前言
使用英飛凌單片機(jī)編譯器 TASKING TriCore Eclipse IDE 開發(fā)編譯時(shí),想必感受最深刻的就是編譯速度,那是非常慢了,如果是部分修改的源文件編譯還好,不用等太久,而如果選擇需要全部編譯,那么這個(gè)時(shí)間就很長(zhǎng)了。
網(wǎng)上也有一些帖子講述了如何提高 Tasking 編譯速度的方式,比如更改多線程編譯的數(shù)目、更改編譯等級(jí)和減少編譯輸出內(nèi)容等來(lái)提高編譯速度。
不過(guò)這些方式?jīng)]有很明顯的提升, Tasking 多線程編譯選項(xiàng)基本是默認(rèn)的,會(huì)根據(jù)電腦的配置自動(dòng)選擇最優(yōu)的線程數(shù)目進(jìn)行編譯,而編譯等級(jí)和編譯輸出內(nèi)容(如map文件)算是治標(biāo)不治本,因?yàn)檎{(diào)試開發(fā)階段這些是不可或缺的,沒(méi)有調(diào)試信息的情況下在仿真調(diào)試階段異常屬于閉眼走路。
下面會(huì)介紹幾個(gè)方式來(lái)提高 Tasking 編譯時(shí)的速度,也會(huì)介紹如何修改編譯時(shí)的多線程數(shù)目。
2、提升編譯速度方法
以下的測(cè)試結(jié)果所使用的電腦配置:Windows 10 + 英特爾 i7(8核) + 64G內(nèi)存 。
在設(shè)置之前首先全部編譯一遍代碼,方便對(duì)比編譯時(shí)長(zhǎng),此次編譯所耗時(shí)長(zhǎng)是 480826ms ≈ 8 分鐘。
Time consumed: 480826 ms **** End of build ****2.1、編譯時(shí)的線程數(shù)目
右擊工程,選擇 "Properties -> C/C++ Build -> Behavior",選擇 "Use parallel jobs",為了明顯比較,這里設(shè)置 16(默認(rèn)8)
看一下編譯時(shí)的CPU使用率,達(dá)到了 100%(因?yàn)檫€有其他軟件在運(yùn)行,所以 Tasking 占據(jù)了 80%)。
此次編譯所耗時(shí)長(zhǎng)是 489038ms ≈ 8 分鐘,沒(méi)有明顯變化,建議采用默認(rèn)的線程數(shù)目即可。
關(guān)于編譯時(shí)的線程數(shù)目,不是越多越好:CPU密集型任務(wù),并行執(zhí)行的線程數(shù)應(yīng)該盡量和CPU核心數(shù)保持一致,否則超過(guò)了CPU核心數(shù),再提高線程數(shù)也不會(huì)提高處理速度,反而因?yàn)?strong>上下文切換帶來(lái)的損耗降低處理速度。
Time consumed: 489038 ms **** End of build ****2.2、Makefile 的自動(dòng)生成
Tasking 在編譯時(shí)會(huì)為項(xiàng)目工程源碼自動(dòng)生成 Makefile 文件,可以查看工程目錄下的 Debug 目錄,里面基本都是各個(gè)源文件的 makefile 文件,都是在編譯時(shí)自動(dòng)生成的。每次編譯(包含修改部分編譯)都會(huì)重新生成一次,這里也需要占用一些編譯的時(shí)間,那么這次測(cè)試取消編譯時(shí)總是生成 Makefile 選項(xiàng)后能提高多少。
右擊工程,選擇 "Properties -> C/C++ Build -> Builder Settings",取消勾選 "Generate Makefiles automatically"(如果新增了文件,那么最好重新勾選上并生成,否則編譯時(shí)新增的源碼文件不會(huì)被編譯)。
此時(shí)測(cè)試編譯耗時(shí)為 489543ms ≈ 8 分鐘,沒(méi)有明顯變化。
Time consumed: 489543 ms **** End of build ****2.3、內(nèi)存參數(shù)配置
由于 Tasking 是基于 eclipse 集成開發(fā)環(huán)境平臺(tái)擴(kuò)展的 IDE,因此可以根據(jù)如何提高 eclipse 的編譯速度的方式對(duì) Tasking 進(jìn)行同樣的設(shè)置。
打開 Tasking 的安裝路徑,找到 eclipse.ini 文件,修改配置信息提高 Tasking 的編譯速度,-Xms設(shè)置為 2048,-Xmx設(shè)置為4096。
-vmargs:說(shuō)明后面是VM的參數(shù)
-Xms256m:虛擬機(jī)占用系統(tǒng)的最小內(nèi)存
-Xmx1024m:虛擬機(jī)占用系統(tǒng)的最大內(nèi)存
建議把這個(gè)稍微設(shè)大一點(diǎn),不過(guò)要根據(jù)自己機(jī)器內(nèi)存大小來(lái)設(shè)置(可能設(shè)置后出現(xiàn)打不開,那就嘗試再小些)
此時(shí)測(cè)試編譯耗時(shí)為 438945ms ≈ 7 分鐘,有些許變化。
Time consumed: 438945 ms **** End of build ****2.4、靜態(tài)庫(kù)鏈接
從編譯的記錄看,iLLD 庫(kù)源碼編譯的時(shí)長(zhǎng)是占比最大的,而通常情況下除非庫(kù)有問(wèn)題或者需要性能優(yōu)化,基本不會(huì)隨意修改 iLLD 的源碼內(nèi)容,但是每次全部編譯都會(huì)重新編譯這一部分源碼內(nèi)容,因此,如果想提高編譯速度的話,那么這一塊就是就是重點(diǎn)需要解決的部分。
將 iLLD 編譯成靜態(tài)庫(kù),然后在編譯時(shí)不再編譯 iLLD 源碼,通過(guò)靜態(tài)鏈接的方式完成整個(gè)工程的編譯。
1、首先右擊工程中添加的 iLLD 目錄,按下圖選項(xiàng)不再編譯 iLLD 源碼。
?2、將編譯好的 iLLD 靜態(tài)庫(kù)放在 iLLD 目錄下,新建一個(gè) Lib 存放,此時(shí)可以看到 Src 是灰色的,代表不被編譯。
?3、右擊工程,"Properties -> C/C++ Build -> Settings -> Tool Settings",按下圖添加靜態(tài)庫(kù),然后編譯。
?4、此時(shí)測(cè)試編譯耗時(shí)為 235933ms ≈ 4 分鐘,發(fā)生了明顯的變化,編譯時(shí)間縮短了一倍。
Time consumed: 235933 ms **** End of build ****?3、總結(jié)
綜上所述,四種方式中只有靜態(tài)鏈接的方式會(huì)明顯縮短編譯時(shí)間外,其他幾種方式均沒(méi)有太明顯的變化。
注:由于反復(fù)操作對(duì)比,即使沒(méi)有按上述方式修改的情況下,每次編譯時(shí)長(zhǎng)都會(huì)比上次編譯要久,所以上述除了靜態(tài)鏈接的方式外,其他方式的測(cè)試編譯時(shí)長(zhǎng)僅供參考。
總結(jié)
以上是生活随笔為你收集整理的如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中粮营销致远A6应用探秘:高速审批执行,
- 下一篇: 锋云数据服务器管理文件说明书,云端数据库