小弟我在编译程序的时候发现了这个问题。
我试了一下,编译为P代码,程序要小很多,也可以运行
请教各位大侠,这两种编译方式的异同?对打包有没有影响?

解决方案 »

  1.   

    编译型和解释型应用程序的比较 
    按照缺省规定,Visual Basic 将应用程序编译成可运行的解释型或 P-code 程序。运行时,动态链接库 (DLL) 将翻译或解释执行程序中的指令。Visual Basic 专业版和企业版还可将程序编译成 .exe 本机代码。在许多情况中,运行本机代码比运行解释型代码本质上要快得多。但事情并非总是这样。以下是一些有关本机代码编译的一般指南: 若代码做了大量固定类型的、非字符串变量的基本操作,则其产生的本机代码将与编译的 P-code 操作码产生最大的反差。然而,对于复杂的经济计算或生成分形图形,用本机代码有很多好处。
    计算密集型程序,或在局部数据结构中处理大量的位和字节操作的程序,用本机代码就可获得明显的好处。
    在许多程序中,特别是那些含有大量 Windows API 调用,COM 方法调用和字符串操作的程序,本机代码不比 P-code 快多少。
    如果应用程序主要含有来自 Visual Basic for Applications 运行库的函数,那么就看不到多少本机代码的好处,这是因为 Visual Basic for Applications 运行库已经高度优化了。
    含有大量子例程调用而非内嵌过程的代码,用本机代码也似乎不太快。这是因为设置栈结构,初始化变量,返回时的清除等工作,用 P-code 引擎和用本机代码所花费的时间相同。 
    注意,调用一次对象、DLL 或 Visual Basic for Applications 运行函数,都会消弱本机代码性能上的优点。这是因为执行代码所花时间相对地少,而大量时间(常常达到 90-95%)花在窗体、数据对象、Windows DLL,或 Visual Basic for Applications 运行库,以及处理内部字符串和变量上。实际测试中,典型情况是客户应用程序总的执行时间有 5% 用于执行 P-code。因此,如果本机代码是瞬时执行的,则在这些程序中用本机代码也只能改进性能最高达 5%。本机代码的目的是可让程序员用 Basic 编写一小片代码或有大量计算的算法。这些,由于性能问题,在以前是决不可能的。使用这些运行非常快的“小片”,也能改善应用程序特定部分的响应,从而改进了整个应用程序的感觉性能。