编译速度对于一个项目(大约2000行)来说太慢了



一开始,代码非常简单(少于500行),编译可以在5秒内完成

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

现在我有以下文件:

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

真正的问题是每次当我只想对项目

做一点改变时,它需要大量的时间来编译。

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

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

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

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

如何使这种情况变得更好?如有任何建议,欢迎指教

c#编译时间很少是个问题。与c++编译器相比,微软c#编译器非常快。我在一个大型c++项目中工作,下面是我们减少长构建时间的方法:

  • 减少依赖关系。如果在头文件中只使用指向类型的指针或引用,则向前声明该类型,而不是包含。
  • 换一台更快的机器。我们在8核i7上开发,内存为16gb。这足够大,可以将整个源代码树放入缓存中。~135000行代码在76秒内编译完成,这通常更像是10秒,因为只有少数文件发生了变化。
  • 根据应用程序,使用更快的编译器。我们有开发跨平台应用程序的优势,所以我在Linux上开发并使用g++,它比Microsoft Visual c++快几倍。clang更快了
  • 花更多的时间规划你的界面。尽量不要太频繁地修改标题。如果适度使用,PIMPL习语可以帮助解决这个问题。

最新更新