【问题标题】:compilation speed is too slow for a project(about 2000 lines) [closed]一个项目的编译速度太慢(大约2000行)[关闭]
【发布时间】:2012-12-21 13:26:57
【问题描述】:

一开始,代码很简单(不到500行),编译5秒就可以搞定

但是随着代码的增长编译变得越来越慢(大约需要20秒到c,随着代码的增长需要更多的时间

我现在拥有的文件是:

Socket、AsyncSocket、WebsocketHelper、AsyncWebsocketServer、MonitorMessage、HtmlHelper、JsonHelper(Jansson库的抽象)、StringHelper、SqlHelper、Logger、AddLocalServerWindow、LandPointWindow、ServerMonitorProxyDlg

真正的问题是我只想对项目做一点改动,每次编译都要花很多时间

例如

我只是想改变一个值来测试一些东西,编译大约需要 20 秒

然后我想添加 JsonHelper::buildArray() 函数,我至少需要 2*20 秒来编译:

当我实现完函数后,我会编译看看它是否可以正确编译,这是前20秒。然后将此方法集成到系统中并编译,大约需要20秒。 事实是,我每次写了大约 5 行代码,我都会编译一下,看看是否有语法错误(这种情况下这是一个坏习惯吗?)

另一个问题是我总是在代码中犯语法错误(每10-20行),所以我需要一次又一次地重新编译代码。我刚才写的代码编译时间很少(这部分是我真正关心的),大量编译时间花在稳定代码上(没有错误,我之前写过)。

如何改善这种情况?任何建议表示赞赏

【问题讨论】:

  • 这是 C# 还是 C++?
  • 它是c++,但我认为c#也需要编译,所以我添加了c#标签..
  • 您使用什么编译器,构建环境、系统规格、操作系统等?如果没有进一步的细节,真的很难帮助你。如果您有一台低端 PC,这将需要时间,而 20 秒并不算多,我有一些项目需要比在现代 PC 上编译更长的时间。
  • 2000 行? 20秒?你在做什么,一些模板黑魔法(例如显示代码)?也许你不应该在手机上编译。
  • 你知道还有什么需要编译的吗? C.D.哈斯克尔。爪哇。为什么不添加所有这些标签?

标签: c++ testing build compilation


【解决方案1】:

C# 编译时间很少成为问题。与 C++ 编译器相比,Microsoft C# 编译器非常快。我在一个大型 C++ 项目上工作,以下是我们为缩短构建时间所做的工作:

  • 减少依赖性。如果在头文件中只使用指针或类型的引用,请前向声明类型而不是包含。
  • 获得更快的机器。我们在具有 16 GB RAM 的 8 核 i7 上进行开发。这足够大,以至于整个源树都可以放入缓存中。大约 135000 行代码在 76 秒内编译完成,而这通常更像是 10 秒,因为只有少数文件发生了变化。
  • 根据应用程序,使用更快的编译器。我们有开发跨平台应用的好处,所以我在Linux上开发,使用g++,比微软Visual C++快几倍。 clang 更快。
  • 花更多时间规划您的界面。尽量不要经常修改标题。适度使用时可以对此有所帮助的一件事是PIMPL idiom

【讨论】:

  • 请注意,尽管有标签,但问题实际上似乎是关于 C++
  • 谢谢,使用foward声明而不是include之后比以前更快了
猜你喜欢
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2016-01-16
  • 2021-03-03
  • 2014-08-07
  • 1970-01-01
相关资源
最近更新 更多