通常,使用 IDE 编译的程序的文件大小是否比使用普通文本编辑器保存的文件大?

Does a program, in general, have a larger file size when compiled with an IDE than saved by a normal text editor?

在 Joyce Farrell 的编程逻辑与设计,第 8 版中,她指出

When you use the IDE to create and save a program, you occupy much more disk space than when using a plain text editor.

她使用了一个用 C# 编写的倍数程序示例。当使用简单的文本编辑器(具体是记事本)保存时,该程序(据说)仅占用 314 字节的存储空间,而使用 Microsoft Visual Studio IDE 编译时占用超过 49,000 字节.

这两个程序的唯一区别是 Visual Studio 中编译的程序显示导入了三个额外的东西:

using System.Collections.Generic;
using System.Text;
using System.Linq;

记事本版剩余程序:

using System;
public class NumberDoublingProgram
{
    public static void Main()
    {
        int myNumber;
        int myAnswer;
        Console.write("Please enter a number >> ");
        myNumber = Convert.ToInt32(Console.ReadLine());
        myAnswer = myNumber * 2;
        Console.WriteLine(myAnswer);
    }
}

我的最后一个问题是,她关于编译程序占用更多 space 的说法是否正确 对于每个 language/compiler 作为一揽子陈述 ?将其用作对所有编程语言的概括是否可以接受,或者这是错误的 information/debunkable?

感谢您的宝贵时间。

用 IDE 编写的代码将编译与用记事本编写的代码相同。不同之处在于 IDE 添加的文件可以让您更好地组织项目,并且可能包括其他占用更多磁盘空间的功能 space。

选择最适合您的项目需求的开发环境。 IDE 对于大型项目非常有用。记事本是为小程序编写代码的好方法。

生成的程序的大小取决于编译器(及其配置 - 例如发布模式与调试模式),而不是您是否在 IDE 或记事本。

要回答问题的第二部分,在 C#、Java 或 C 中需要一行代码的东西在生成的可执行文件中可能需要几行代码(因为 higher-level 语言抽象出一些实现细节;例如,有相当多的汇编语言继续进入和退出一个方法,但是当你使用 C 时,它对你是隐藏的,以至于很多人甚至没有意识到执行方法调用的任何开销)。这就是源代码文件通常小于生成的可执行文件的原因。

为了说明这一点,您可以查看一些很好的 C# 示例和生成的 CIL 代码 here

描述可执行文件中内容的更多答案:

  • what's in a .exe file?
  • What does executable file actually contain?