c++ - 项目编译速度太慢(约2000行)

标签 c++ testing build compilation

<分区>

一开始代码很简单(不到500行),5秒就能编译完成

但是随着代码的增长编译变得越来越慢(到c需要20秒左右,随着代码的增长,时间会越来越长

我现在的文件是:

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++ 编译器相比,Microsoft C# 编译器非常快。我在一个大型 C++ 项目上工作,下面是我们为减少较长的构建时间所做的工作:

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

关于c++ - 项目编译速度太慢(约2000行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991054/

相关文章:

ruby-on-rails - 如何在 rspec 请求规范中设置请求 header ?

android - 如何运行从git android checkout 的项目

visual-studio - Docker 镜像在 Windows/MVC 核心上构建的速度很慢

c++ - Visual Studio 2015连Hello World程序都编译不了

java - 从 Maven 运行测试失败并停止构建 jar

sockets - Clojure TCP 客户端的测试工具

build - cmake - 防止 `make clean` 清理 ExternalProject

c++ - Web Assembly (wasm) 会有自己的语法吗?

c++ - 如何将 unicode 点 U+10000 编码为 char16_t 字符串文字?

c++ - 模拟系统调用 - 有更好的方法吗?