发布评论
评论(8)
月亮邮递员2024-07-21 08:48:46
语言设计确实对编译器性能有影响。 C++ 编译器通常比 C# 编译器慢,这与语言的设计有很大关系。 (这也取决于编译器实现者,Anders Hejlsberg 实现了 C#,并且是最好的之一。 )
C++ 的简单“头文件”结构导致其性能降低,尽管预编译头通常会有所帮助。 C++ 是一种比 C 复杂得多的语言,因此 C 编译器通常速度更快。
故人的歌2024-07-21 08:48:46
我认为这里的其他答案错过了导致 C++ 编译速度变慢的情况的一些重要部分:
- 将
.obj
/.o
文件保存到磁盘并读回的编译模型,然后链接它们 - 一般情况下的链接,特别是不良的慢速链接器
- 过于复杂的宏预处理器
- 任意复杂的图灵完备模板系统
- 嵌套并重复包含源文件,即使使用
#pragma Once
- 用户造成的碎片、分割代码太多的文件(在极端情况下,甚至每个文件一个函数)
- 编译器中臃肿或省力的内部数据结构
- 过度膨胀的标准库,模板滥用
相比之下,这些不会减慢 C++ 编译速度:
- 扫描/ Lexin
- 解析
- 中间代码生成
- 目标机器代码生成
顺便说一句,优化是最大的减慢之一,但从某种程度上来说,它是这里唯一实际必要的减慢,而且它完全是可选的。
汹涌人海2024-07-21 08:48:46
运行 Idera RAD Studio(有免费版本)。 它带有 C++ 和 Delphi。 Delphi 代码的编译时间只是执行相同操作的 C++ 代码的一小部分。 这是因为 C++ 在过去几十年里发展得非常可怕,没有太多考虑编译器的后果,因为它是复杂的上下文确定的宏,并且在某种程度上是所谓的“.hpp”地狱。 艾达也有类似的问题。 Pascal 的 Delphi 方言从一开始就被设计为一种高效的编译语言。 因此,编译和运行只需几秒钟,而不是几分钟,从而使迭代调试变得快速而轻松。 调试编译缓慢的语言是一种巨大的时间浪费,而且是一种痛苦,你知道吗! 顺便说一句,Anders 在 M$ 偷走他之前也写过 Delphi!
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
C++ 的一个特定问题导致其速度极其缓慢,与几乎任何其他语言不同,您无法独立于语义分析来解析它。
One C++ specific problem that makes it horribly slow is that, unlike almost any other language, you can't parse it independently of semantic analysis.