C编译器生成轻量级可执行文件

时间:2010-04-10 17:04:21

标签: c compiler-construction visual-c++

我目前正在使用MSVC for C ++,但是当我切换到C编写一个性能密集型程序(解释器)时,我必须搜索一个合适的C编译器。

我看过一些由Turbo-C制作的二进制文件,即使它看起来很旧,它们看起来也非常简单和优化。

现在我不知道构建解释器的最佳编译器是什么,但也许你可以帮助我。 我考虑过海湾合作委员会,但由于我不太了解它,我不能确定。

5 个答案:

答案 0 :(得分:5)

99.9%的程序性能取决于您编写的代码和您选择的语言。 你可以放心地忽略编译器的性能。

坚持使用MSVC ......并且不要浪费时间:)

答案 1 :(得分:3)

如果我是你,我会采取更少担心编译器的方法,并担心你自己的代码。以合理的方式编写解释器的代码。然后,对其进行分析,并根据它们花费的时间来优化斑点。与使用特定编译器相比,这更有可能产生性能优势。

答案 2 :(得分:1)

如果你想要一个轻量级程序,那么你需要担心的不是你编写的代码和你使用的库。大多数编译器将使用相同的源代码生成类似的结果。

例如,使用C ++和MFC,一个基本的Windows应用程序用于从大约900kB开始并快速增长。与动态MFC dll链接可以降低到几百kB。但是完全丢弃MFC--直接使用Win32 API - 并且使用最小的C运行时,在大约25kB或更低的.exe中实现同样的东西相比很容易(IIRC - 自从我这么做以来已经很长时间了。) / p>

所以放弃库并返回到适当的低级别C(如果不使用太多“聪明”的功能,甚至是C ++),并且可以轻松编写非常紧凑的应用程序。

修改

我刚刚意识到我对问题标题感到困惑,而不是专注于轻量级应用程序,而不是专注于性能,这似乎是题。如果你想要性能,那么没有特别需要使用C,或者转向痛苦的开发环境 - 只需编写好的高性能代码。从根本上说,这是关于使用正确的设计和算法,然后分析和优化生成的代码,以消除瓶颈和低效率。请注意,现在您可以通过切换到多线程方法而不仅仅是专注于原始代码优化来实现更大的收益 - 确保您充分利用硬件。

答案 3 :(得分:0)

您可以使用GCC,MingWEclipse CDT或其他Windows端口之一。您可以optimize获取可执行文件大小,生成的可执行文件的速度或编译速度。

答案 4 :(得分:-2)

C ++被设计为向后兼容C.所以任何C ++编译器都应该能够编译纯C.你可能想告诉它它是C而不是C ++,所以编译器不会进行名称修改等。如果编译器对C ++非常好,它应该同样好,或者更好用C,因为C更简单。

我建议坚持使用MSVC。这是一个非常体面的系统。如果你不相信 - 比较你的选择。使用多个编译器构建相同的程序,查看它们生成的程序集,测量生成的可执行性能等等。