一开始,代码非常简单(少于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习语可以帮助解决这个问题。