2015-02-11 94 views
2

或者采用更相关的方式,编程语言的哪些特征会影响相应生成的可执行文件的牢固度?什么让编程语言更快?

当然,这是编译器生成真正重要的可执行文件。例如,您可以想象一些先进的编译链,它能够从自然语言描述中推断出可执行文件,并提供相关问题和提供的建议,以消除与给定数据匹配得很好的可能性太低。

现在C以使开发人员能够获得真正快速的可执行文件“便携式汇编程序”而闻名。但是,是因为这种语言可以简化源代码和目标代码之间的匹配,并且同时简化优化编译器的开发?或者是因为使用C的开发人员对它在木材下的工作方式更敏感,因此使用C编写代码?还是其他原因?

When did people first start thinking 'C is portable assembler'?

+0

在开发时间和错误预防中获得最大收益。实际性能很少是编译器问题。效率低下通常是由于编程不当造成的。 – Stefan 2015-02-11 13:25:39

回答

0

用于在那里花了更多的代码在另一种编程语言

+1

详细程度似乎不是唯一的参数,例如,当Python的声誉提供更快的可执行文件时,python远不如C。 – psychoslave 2015-02-11 13:29:48

0

,以解决被认为是最为突出的特点,使语言快一个问题较少的代码是其数据类型如何对应机数据类型。 Java被认为是一种高效的语言,因为它具有原始数据类型。相反,用任何以任何语言处理所有类型(甚至是字符和整数)作为对象的语言(如所有脚本/无类型语言那样)的性能必然受到影响。

0

C很快,因为除了Assembly之外,C之下没有语言。所以这是一个原因。其次,编写哪种语言编译器也很重要,因为如果语言自己慢,那么用该语言编写的编译器也很慢。所以,它会产生代码,但速度并不快。第三,许多时间语言实现算法在说明语言的数据类型如何实现等方面也扮演着重要的角色。

生成优化的代码,以便能够快速运行,并且在NP完整性中占用更少的内存。

+0

好吧,'没有语言'是与你如何编译代码有关。编写编译器的语言在这里是鸡蛋/鸡的问题。我的问题更多地面向“哪些功能可以使源语言更容易优化?”。 – psychoslave 2015-02-11 13:34:18

+0

我认为它对于语言来说很重要,因为它如何编译代码说一种语言X被转换成C然后汇编成汇编语言,所以它可能不是快速的语言,因为它需要两个对话来生成代码。 – Kiran 2015-02-11 13:37:16

4

由于其灵活性,C仍然是“最快”的语言。它并没有强加一个刚性的运行时模型。开发人员可以自由创建自己的运行时结构,体系结构和数据结构。例如,20年前,处理器“速度很慢”(相对于内存速度而言),许多优化的重点是查找预计算值大表中的结果。现在,处理器速度很快,内存很慢。现在,优化专注于缓存效率 - 因为大数据表会打击缓存,通常会避免它们,并且任务将转移回处理器。

许多语言不仅仅是一种语言。大多数现代语言包括运行速度依赖的运行时框架和库。这些运行时框架通常锁定在基本的数据结构和内存管理模型中。当硬件发生变化时,不灵活的框架变得效率低下。由于C可预测地编译为本地目标代码,并且不会强加严重的运行时间,因此它已经并将继续处理主要的硬件体系结构更改,并始终成为最快的语言之一。

+0

非常好的答案。这是我正在寻找的那种,谢谢。 – psychoslave 2015-02-11 16:23:20