0

一开始,代码很简单(不到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 行),所以我需要一次又一次地重新编译代码。我刚刚写的代码编译时间很少(这部分是我真正关心的部分),大量编译时间花在稳定代码上(没有错误,我之前写过)。

如何让这种情况变得更好?任何建议表示赞赏

4

1 回答 1

4

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

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