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

解决方案 »

  1.   

    EXE文件的属性设置使用默认的就很好,这些问题用途不大
    优化算法生成的可执行文件更小
      

  2.   

    如果拥有   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)   处理器浮点数除法的安全检查。     
        
        
      详细信息   关于本机代码选项的详细信息,请参阅“本机代码编译器开关”。   
      
      

  3.   

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