对于使语言“快速”运行的原因,我知之甚少,但是对我来说,为极简主义而设计的语言也将非常快,对吧?
C比BrainFuck更接近英语,并且BrainFuck的编译器大小非常小,为1024字节,与Tiny C编译器(大小约为100 KB)相比,几乎没有什么。
但是,所有在线网站都将C视为最快的语言条码或汇编。
(进行清晰度编辑以使问题搁置)
如果我在C和BrainFuck中制作了相同的程序(例如,它们计算了斐波那契数列的前100个数字),那么哪个程序可以在运行时更快地完成任务?哪一个编译速度更快?
答案 0 :(得分:5)
是,不是。有一些语言功能会使语言变慢(某些情况下是垃圾收集,动态类型仅在运行时才知道,…),而其他一些功能会使语言变得更复杂,但允许编译器具有更大的自由度。
要点:C ++的constexpr关键字实现起来有些复杂,但允许程序员告诉编译器“此函数应用程序必须可由其结果替换”。在极端情况下,这使编译器可以以恒定的结果替换昂贵的函数调用(例如fast fourier transform),而无需任何运行时开销。
已编译的C代码非常快,因为它几乎没有不直接映射到汇编器的功能,并且已经进行了近半个世纪的编译器优化。
答案 1 :(得分:2)
这取决于编译器的能力。
编译器将源文件转换为可执行文件。 (对于C而言)程序分为四个阶段:
通常会创建一个抽象语法树(AST)。 AST通常用于生成中间表示(IR),有时也称为中间语言,用于代码生成。
这种中间语言实际上是编译成机器代码的,这与从哪一种高级语言(在这种意义上说是一种高级语言)得到的无关紧要。