减少 C 程序在有 30 个同时编程时的编译时间


reduce compilation time of C program when there are 30 simultaneous programs

我正在尝试制作一个可以通过浏览器访问的在线gcc编译器。对于所有这些,我在窗口XP上使用php,cygwin。实际上,我正在将浏览器上的代码窗口提供给用户。


一般流程如下:

  1. $source写入 .c 文件
  2. .c文件编译由GCC编译器和.exe文件创建
  3. 向用户
  4. 显示.exe文件的输出。

应该在c程序中没有用于测试的读取函数,我只使用一个printf语句。


问题是:

如果有大约30个

同时请求意味着30个用户在同一时间点编译程序,那么它将在大约15秒内产生输出,这太长了。

有人可以帮我减少这个时间吗?欢迎每个建议

我可以只读取 C 程序的输出而不制作.exe文件吗?

一个起点可能是探索分布式构建系统。

在Windows上,我知道一个(非自由的)解决方案是Incredibuild。大约 8 年前,我们将它用于我们的一个项目,它将清洁和构建时间从 25 分钟减少到大约 5 分钟。这里有一个评论。

现在,当我刚刚搜索其他替代方案和非Windows解决方案时,我也找到了distcc。

这里还有一个关于 Incredibuild 替代品的讨论(看似古老)。

如果每个编译请求的 C 源代码几乎相同,则可以使用启用编译器缓存的构建系统。 例如 waf 和 cmake。他们可以利用先前建筑物的副本来加快编译速度。