Compiler construction 基于云的编译器可行吗?

Compiler construction 基于云的编译器可行吗?,compiler-construction,cloud,cloud-platform,Compiler Construction,Cloud,Cloud Platform,编写一个基于云的编译器,将编译后的代码单元分散在云中的不同机器上,这会有什么实际好处吗?编译后立即在应用程序中获得软件即服务体系结构是否有好处,或者固有的延迟是否会使这种方法不切实际?视情况而定。我们以前有基于C++的编译,需要3-4小时。对于类似的事情,卸载编译是非常有用的。但在C++项目中,这通常更不可能。 使用C#或Java时,编译时间要快得多,因此它可能没有那么重要。我认为这是不切实际的。今天的硬件可以在合理的时间内完成任何中小型项目的编译;多核CPU更是如此 唯一的例外是从源代码构建整

编写一个基于云的编译器,将编译后的代码单元分散在云中的不同机器上,这会有什么实际好处吗?编译后立即在应用程序中获得软件即服务体系结构是否有好处,或者固有的延迟是否会使这种方法不切实际?

视情况而定。我们以前有基于C++的编译,需要3-4小时。对于类似的事情,卸载编译是非常有用的。但在C++项目中,这通常更不可能。


使用C#或Java时,编译时间要快得多,因此它可能没有那么重要。

我认为这是不切实际的。今天的硬件可以在合理的时间内完成任何中小型项目的编译;多核CPU更是如此


唯一的例外是从源代码构建整个操作系统(如Debian);对于这样的应用,建造农场被广泛使用。但是,需要构建场的用户通常可以自己创建它们,而不需要到云上。

我使用过这样的系统,但它在本地集群上工作,而不是在云上。但原则是完全一样的。不幸的是,我记不起它叫什么了——但看着你的源文件被分发到你部门的其他电脑上,这很酷


编辑:它被称为。

Xcode有一个分布式构建功能,可以让你这样做,但我认为在局域网以外的任何地方,它在大多数时候都会非常慢。

我认为如果它是某种持续集成工具,它可能会很有用。对于某些开发环境,很难获得正确的设置。例如,我曾经在一个项目中工作,团队使用and编译SWF文件。在个人电脑上设置有时是件痛苦的事。但是,如果一个服务能够监视一个项目目录或git/SVN/etc.存储库并构建最新的SWF,我认为这会很有用


我想这也适用于跨平台项目。或者,此服务可以支持浏览器内IDE。

您可以使用
distcc
make-j
分布式编译最典型的unix代码。如果你经常编译大块代码,它可能会给你带来很大的加速。。。afaik samba(免费smb实现)开发人员为此使用它
distcc
仅以分布式方式执行编译阶段,将预处理和链接留给主计算机


与“云”的交互可能会导致延迟,但我仍然认为,用更复杂的C++代码,它可能非常有用。我想如果你有超过100个编译单元(f.e..cpp文件),你可以得到明显的加速。

我看到了一个在GridGain之上运行JUnit测试的演示,GridGain可以在云中运行


不过,我认为云端编译器没有多大价值。

我不确定我是否误解了你的观点,或者其他答案是否有误解。你说的是某种自动并行任务吗?到目前为止给出的答案似乎是关于分布式编译——即使用云来加快编译时间。我以为你说的是针对云计算资源的编译器

如果您实际上谈论的是分布式编译,那么很明显像distcc这样的东西可以满足您的需要

如果你问一个更有趣(IMHO)的问题,关于针对分布式体系结构的编译器是否有用,我的答案是响亮的“是”。然而,可行性是问题的核心。延迟本身不是问题,但是一致性(即确保所有单元的正确版本都已就位)和具有适当的启发式将是一个问题


最好的地方可能是Occam编程语言——它以transputer为目标,这与我们现在感兴趣的分布式系统体系结构并没有完全不同。我相信Occam接下来的一些工作可能会提供有用的线索,说明什么是最先进的。

是的,谢谢你的提问,我也在这个领域进行研究。 事实上,这很有意义,而且它确实存在,但就我所见,它离成为前十名服务还有很长的路要走

延迟只存在于代码的上传中,因此如果开发人员使用的是良好的连接,并且不会太远(就网络跳数和“良好”跳数而言),那么这将不是一个问题


云上的延迟是云提供商的问题,如果你是云提供商,那么你需要一个好的平衡策略。

我使用过IncredBuild,它在LAN上运行得很好。从理论上讲,这样的事情可以在云中完成,仅仅是让CPU资源闲置以使其工作可能会很昂贵。IncredBuild使用局域网上其他机器的备用CPU,这很有意义而且是免费的。是的。。。这就是我要问的,一个针对分布式体系结构的编译器是否可行。。。在一个地方编写代码并将其作为一系列弱链接、可重用的服务在云中运行。我想这会很有用,我想知道延迟是否会使它在野外无法运行。标题中所述的“基于云的编译器”意味着在云中运行的编译器,而不是生成基于云的程序的编译器。我想我误解了。