优化C++Builder的执行机械码

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编译程序也一样适用.

 



Comments

Check out more tips and tricks in this development video: