编写基于云的编译器是否会带来任何实际好处,这会在云中的不同机器上传播已编译的代码单元?在编译之后,在应用程序内获得软件即服务架构是否会带来好处,或者固有延迟会使这种方法变得不切实际?
答案 0 :(得分:3)
我不确定我是否误解了你的观点,或者是否有其他答案。你在谈论某种自动并行化任务吗?到目前为止给出的答案似乎是在谈论分布式编译 - 即使用云来加速编译时间。我假设您正在讨论针对云计算资源的编译器。
如果你实际上是在谈论分布式编译,那么很明显像distcc这样的东西会做你需要的。
如果你问的是关于针对分布式架构的编译器是否有用的更有趣(恕我直言)的问题,我的答案是响亮的“是”。然而,可行性是问题的核心。延迟不是问题本身,但是连贯性(即确保所有单元的正确版本都已到位)并具有良好的启发式将是一个问题。
最好看的地方可能是Occam编程语言 - 它针对晶片机,这与我们现在感兴趣的分布式系统架构并不完全不同。我相信从奥卡姆那里可以得到一些可以为现有技术提供有用线索的工作。
答案 1 :(得分:2)
我使用过这样的系统,但它在本地群集上工作,而不是云。但原则完全一样。不幸的是我不记得它被称为什么 - 但它很酷,看着你的源文件被安排到你所在部门的其他电脑。
编辑:它被称为IncrediBuild。
答案 2 :(得分:2)
您可以使用distcc
和make -j
进行大多数典型unix代码的分布式编译。如果你经常编译大块的代码,它可能会让你获得大的加速... afaik samba(免费的smb实现)开发人员使用它。 distcc
仅以分布式方式执行编译阶段,将预处理和链接留给主机。
与“云”的交互可能会导致延迟,但我仍然认为使用更复杂的c ++代码可能会非常有用。我想如果你有超过100个编译单元(例如.cpp文件),你可以获得明显的加速。
答案 3 :(得分:1)
我认为这是不切实际的。今天的硬件可以在合理的时间内完成任何中小型项目的编制;多核CPU更是如此。
唯一的例外是从源代码构建整个操作系统(例如Debian);对于这种应用,建造农场正在广泛使用。但是,需要构建场的用户通常可以自己创建它们,而不需要转到云端。
答案 4 :(得分:1)
Xcode有一个分布式构建功能,可以让你这样做,但我认为除了局域网之外的其他任何东西,大部分时间都会很慢。
答案 5 :(得分:0)
这取决于。我们曾经有过基于C ++的旧编译,需要3-4个小时。对于类似的东西,卸载编译会非常有用。但是在C ++项目中,这往往更不可能。
使用C#或Java,编译时间明显加快,因此可能不那么重要。
答案 6 :(得分:0)
我认为如果它是某种持续集成工具,这可能很有用。对于某些开发环境,难以进行正确的设置。例如,我曾经在一个项目中工作过,团队使用FlashDevelop和Adobe's Flex SDK编译了SWF文件。在个人的计算机上设置有时是一种痛苦。如果服务可以监视项目目录或git / SVN /等。存储库并构建最新的SWF,但是,我认为这将是有用的。
我想这也可以用于跨平台项目。或者,此服务可以支持像Mozilla's Bespin这样的浏览器内的IDE。
答案 7 :(得分:0)
我见过一个在GridGain上运行JUnit测试的好演示,GridGain可以在云端运行。
我认为编译器在云端的价值并不高。
答案 8 :(得分:0)
是的,谢谢你的提问,我正在研究这个领域。 实际上它很有意义而且它存在,http://www.cloudcompiling.com/,但是对于我所能看到的它仍然是一个十大服务。
延迟仅在代码上传时,因此如果开发人员正在使用良好的连接而不是太远(就网络跃点和“好”跳跃而言),那么这不是问题。 / p>
云端的延迟是云提供商的问题,如果你是云提供商,那么你需要一个良好的平衡策略。