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