如何故意减慢编译速度?

时间:2019-06-10 14:15:48

标签: c++ c optimization compilation

有很多问题询问如何加快C ++代码的编译。我需要做相反的事情。

我正在使用一个监视编译器调用的软件,以便进行静态代码分析。但是,如果编译器进程关闭得太快,监视软件可能会错过它。所以我需要放慢编译速度。我知道这是一个糟糕的解决方案,希望它是暂时的。

我想出了两种解决方案:

  • 禁用并行构建,启用预处理器和编译器列表生成。它可以工作,但是需要大量的鼠标单击
  • 使用编译器选项强制包含特殊的头文件,这会以某种方式减慢编译速度。

不幸的是,我无法提供简单易写却难以同时编译的东西。大量使用#warning似乎可行,但显然会使输出混乱。

我将Keil与armcc编译器一起使用,因此我可以使用大多数C ++ 11,但是最大模板递归深度仅为63。

最好不要在二进制大小或运行时间上产生任何开销。

UPD:我会尝试澄清一下。 我知道,这是一个可怕的想法,我知道应该以不同的方式解决这个问题。我将尝试以不同的方式解决它,但我也想探索这种可能性。

2 个答案:

答案 0 :(得分:1)

也许这个解决方案会足够慢=),就像@NathanOliver提出的那样。 我使用它的编译时间表正弦。它需要额外的空间,但您可以对其进行一些微调(表格大小和正弦精度是“ staticSinus”功能的模板参数,希望您能找到最好的方法)。 https://godbolt.org/z/DYZDF5

答案 1 :(得分:0)

您不想做任何事情。以下是一些不同程度的混淆的解决方案:

  1. 理想解决方案:从Makefile中调用代码 analysis

  2. 将编译器替换为例如将命令行转发到编译器,然后触发分析工具的Python脚本。

  3. 监视器 make而不是编译器-它的寿命更长。

  4. 有一个很小的包装器脚本在共享内存中维护一个引用计数,并且当引用计数最初增加时,在编译器完成后,包装器应进入休眠状态“足够长的时间”。 监控该脚本。

简而言之:监视工具不应监视任何内容。应该从构建工具中调用代码分析,即在Makefile中给出。如果手动生成Makefile太麻烦了,请将cmakeninja一起使用,或者将xmake与没有依赖项一起使用。您还可以生成IDE所需的任何“项目”文件,以简化项目的工作。但是,让除Keil特定的东西之外的其他东西成为该项目的真相:从那时起,一切将变得轻松。