编译器占用多少内存空间



我读过一篇关于BrainFuck的文章,这是一种缓慢的,用户不友好的语言,其目标只是创建世界上最小的编译器。根据维基百科,他们已经将MS-DOS的字节降低到98字节

这看起来非常小,但对我来说很难想象它有多小。当我查看Java等下载页面时,文件(取决于操作系统)小至27MB。与BrainFuck相比,这是巨大的,但根据我的理解,这也包括它附带的所有库。

有没有办法查找编译器占用的实际空间?我很想将BrainFuck与其他编译器进行比较,例如Java,C++,汇编程序(也许更多)。

有没有办法查找编译器占用的实际空间?

当然,下载上述编译器并检查它们占用了多少磁盘空间;并且不要忘记考虑它们的依赖关系。

不过,对于像Oracle的Java编译器这样的东西来说,这可能很棘手;你下载的内容不仅仅是javac,这是编译器Java到Java字节码的实际模块。该模块隐藏在tools.jar文件中,通过检查它,您可以看到编译器大约需要 3 MB。

但话又说回来,该编译器是用 Java 编写的,因此您必须有一些 JVM + 运行时库才能运行它;我不知道可以运行它的最小包是什么,但我猜它至少会是几个好的 MB。

即使是编译为本机代码的语言也经常需要一些运行时库(例如 C 标准库) - 如果您想计算这些库的大小,这是您的调用。

我很想将BrainFuck与其他编译器进行比较,例如Java,C++,汇编程序(也许更多)

列表中的所有项都不是编译器。Brainfuck,Java和C++是语言;汇编程序是将汇编语言转换为目标代码的工具的通用名称。您要比较的是具体的实现。

无论如何,请记住,编译器通常不会针对小磁盘空间进行优化 - 即使它们是,这也是一个小目标。此外,仅基于此比较编译器是没有意义的 - 例如,上面的Brainfuck编译器没有进行优化(无论如何,Brainfuck是一种极低级的语言)。您真的能将它与更具表现力并由编译器积极优化的高级语言进行比较吗?我不明白这有什么意义。

最新更新