最佳化BCB的執行機械碼

Posted by on in Blogs

許多C++Builder的朋友向我抱怨為什麼不多寫一些C++Builder的文章, 總是Delphi的內容, 在此先向C++Builder的朋友抱歉, 因為時間有限, 不過在本文中就讓我寫一個使用C++Builder的小心得跟C++Builder的朋友分享.

使用C++Builder的朋友都知道當專案開發完成後就可編譯Debug檔或是Release, 也都知道這2種編譯檔的差別. 但還是有一些更內門的C++Builder朋友詢問我C++Builder是否可產生更好的編解碼.

要產生更好的執行編解碼有許多的決定因素, 如果我們先把其他因素暫時擱置, 以現有C++Builder的功能而且在不動程式碼的前題下, 是有一個小技巧可以產生更好的執行編解碼.

 

下圖是一個C++BuilderVCL空白項目, 如果我們以Release模式編譯它, 並在Messages視窗展開bcc64編譯器命令列可以看到一堆的編譯器指令, 但其中的-O2就是編譯器的最佳化編譯指令:

這是C++Builder在內定上對於Release模式是使用-O2, 但其實如果使用C++Builder新的LLVM編譯器的話一共有3種最佳化編譯指令:

 

 

編譯器最佳化指令

功能

-O1

編譯器專注於最佳化產生的編譯檔的大小

-O2

編譯器專注於最佳化產生的執行碼執行效率

-O3

編譯器更進一步專注於最佳化產生的執行碼執行效率而且會產生比-O3稍大的編譯檔

因此如果C++Builder開發人員想產生最好的最佳化執行碼, 可以試著使用-O3最佳化編譯指令. 但如何做到? 很簡單, 強制覆蓋C++Builder本身使用的-O2.

 

打開專案的Advanced選項, Additional Options to pass to the compiler中使用-O3

 

再重新編譯項目, 就可以看到如下的bcc64編譯器命令列:

C++Builder仍然使用-O2, 但被稍後我們加入的-O3強制覆蓋, bcc64這個新的Clang-based編譯器就使用最好的-O3來編譯你的的專案了, 當然對於32位的Clang-based編譯器也一樣適用.

 

 

Have Fun!.



Comments

Check out more tips and tricks in this development video: