当前位置:  开发笔记 > 编程语言 > 正文

为什么汇编需要这么长时间?

如何解决《为什么汇编需要这么长时间?》经验,为你挑选了5个好方法。

我正在设计一种编程语言,我正在思考的问题之一就是为什么编程语言需要很长时间才能编译.假设c ++需要很长时间,因为它需要在每次编译文件时解析并编译头文件.但是i -heard-预编译的标题需要多长时间?我怀疑c ++不是唯一有这个问题的语言.



1> dsimcha..:

一个C++特定的问题使得它非常慢,与几乎任何其他语言不同,你不能独立于语义分析来解析它.



2> Rob Lachlan..:

编译是一个复杂的过程,涉及很多步骤:

扫描/乐星

解析

中间代码生成

可能是中间代码优化

目标机器代码生成

可选择与机器相关的代码优化

(暂且没有链接.)

当然,这需要一些时间用于更长的计划.



3> Norman Ramse..:

预编译的头是方式速度更快,因为自从1988年以来,至少知道.

C编译器或C++编译器花费很长时间的常见原因是它必须#include,preprocess,然后才能使用令牌.

作为练习,您可能会发现在典型的头文件集合上运行cpp需要多长时间 - 然后测量输出的lex所需的时间.

gcc -O使用了由Chris Fraser和Jack Davidson开发的非常有效但有些慢的优化技术.大多数其他优化器可能很慢,因为它们涉及对相当大的数据结构的重复迭代.



4> Greg Hewgill..:

语言设计确实会对编译器性能产生影响.C++编译器通常比C#编译器慢,后者与语言设计有很大关系.(这也取决于编译器实现者,Anders Hejlsberg实现了C#并且是最好的之一.)

C++的简单"头文件"结构有助于降低其性能,尽管预编译头文件通常可以提供帮助.C++是一种比C语言复杂得多的语言,因此C编译器通常更快.


安德斯也是德尔福(以及之前的Turbo Pascal)的总工程师.

5> dmckee..:

编译不需要花费很长时间:tcc足够快地编译ANSI c以用作解释器.

要考虑一些事情:

    扫描和解析过程中的复杂性.据推测,需要长时间预测会受到影响,因为语境(而不是无语境)语言也会受到影响.

    内部代表.构建和处理大型且功能强大的AST需要一些时间.大概你应该使用最简单的内部表示来支持你想要实现的功能.

    优化.优化是挑剔的.你需要检查很多不同的条件.你可能想要多次通过.所有这些都需要时间.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有