编译为P-代码和编译为本机代码有什么区别?

原帖地址:

http://topic.csdn.net/u/20091104/12/1f724e60-117f-485f-9f87-4a8c7679ab55.html?24151

 

 

话题如下:
1、编译中,编译为P-代码和编译为本机代码有什么区别?两者哪一个生成的可执行文件更优?
2、选择了编译为本机代码后,可以设置一些选项,比如:代码优化速度、代码大小优化、无优化等,它们分别有什么积极和不利的作用?
3、设置高级优化需要注意什么?不会带来什么问题吧?
4、怎么才能有效的压缩生成的可执行文件大小?

 

 

 

      如果拥有  Visual  Basic  的专业版或企业版,既可以将代码编译成标准的  Visual  Basic  伪代码格式,也可以编译成本机代码格式。本机代码编译提供了伪代码编译所没有的关于优化和调试的几个选项。 
   
      P-code  或伪代码,是介于  Basic  程序中的高级指令和计算机处理器执行的低级本机代码之间的一种中间步骤。在运行时刻,Visual  Basic  将每一句伪代码转换成本机代码。如果将程序直接编译成本机代码,则取消了伪代码这一中间步骤。 
   
      可以使用象在  Visual  C++  中提供的调试环境之类的标准的本机代码调试工具来调试编译后的本机代码。也可以使用例如在  Visual  C++  的语言中提供的优化和调试本机代码的选项。例如,可以根据代码运行速度和大小优化代码。 
   
      注意: 所有用  Visual  Basic  创建的工程都使用运行时  DLL  (MSVBVM60.DLL)  服务。在  DLL  所提供的服务当中有您应用程序的启动和关闭代码、窗体和内部控件的功能,以及像  Format  和  CLng  的运行时函数。 
   
      用“本机代码”选项来编译工程意味着您写的代码将完整地编译为处理器芯片的本地指令,而不是编译为p-code。这将大大加速循环和数学计算,并可以加速对  MSVBVM60.DLL提供的服务程序的调用。然而,这并不能减少对  DLL  的需要。 
   
      要将工程编译成本机代码,请按照以下步骤执行:   
   
      在“工程”窗口,选择希望编译的工程。 
   
   
      从“工程”菜单选择“工程属性”。 
   
   
      在“工程属性”对话框,单击“编译”选项卡。   
      图  8.6  在“工程属性”对话框中的“编译”选项卡   
   
   
   
      选择“编译为本机代码”。   
      Visual  Basic  提供几个选项用于定制和优化可执行文件。例如,当希望创建以代码大小为优化目标的编译代码时,可选择“小代码优化”选项。 
   
      如使用附加的高级优化选项,单击“高级优化”按钮。  
    
      选择所希望的选项,然后单击“确定”。 
   
   
      从“文件”菜单选择“制作  Exe”或者“生成工程组”。   
      下表描述本机代码优化选项。 
   
      选项  描述   
      禁止别名引用(高级优化)  通知编译器应用程序不使用别名引用。选择本选项将允许编译器实施优化,如将变量存储在寄存器中并且实现循环优化。   
      创建  Symbolic  Debug  Info  产生  .pdb  文件和  .exe  或  .dll  文件,其中包含允许用  Microsoft  Visual  C++  5.0  或其它兼容调试器进行调试的信息。   
      支持  Pentium  Pro(tm)  优化代码,使其支持在  Pentium  Pro(tm)  处理器上运行。   
      不优化  取消所有的优化。   
      快速代码优化  通知编译器侧重于运行速度而非代码大小进行优化,使  .exe  和  .dll  文件的速度达到最快。   
      小代码优化  通知编译器侧重于代码大小而非运行速度进行优化,使  .exe  和  .dll  文件的大小达到最小。   
      取消数组边界检查(高级优化)  禁用  Visual  Basic  的数组边界检查。   
      取消浮点数错误检查(高级优化)  禁用  Visual  Basic  的浮点数错误检查。   
      取消整数溢出检查(高级优化)  禁用  Visual  Basic  的整数溢出检查。   
      取消  Pentium(tm)  FDIV  安全性检查(高级优化)  禁用对  Pentium(tm)  处理器浮点数除法的安全检查。    
    
      详细信息  关于本机代码选项的详细信息,请参阅“本机代码编译器开关”。

 

  

 

1.P-Code 是为了与早期版本兼容,不用考虑。
2.速度与可执行文件大小成反比,当然文件大小决定了载入内存的大小。现在存储空间不再受限于软盘大小,可以用速度优化。
3.没有迫切的速度需求不要选高级优化,每个选项都会带来风险。比如 Remove Array Bounds Checks 后数组下标越界就不会出错,访问数组之外的内存通常引发崩溃。
改进算法比移除检查有更大的优化效率。
4.最主要的是不在控件属性中添加图片,一律运行时载入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值