今天早上编译的时候,我有一个想法。
给定一台专用的Linux机器(例如,运行Fedora ),用户远程登录并编译他们的c++软件,该软件存储在他们自己的机器上(在一个小型局域网上),通过符号链接链接到Linux机器上。
假设现在每个用户都在编译完全相同的代码……一个用户可以在10分钟内编译和链接他的代码。
2个用户同时编译总共需要20分钟吗? 3个或10个用户呢?
是否存在随着用户数量的增加而产生递减回报的开销?
作为一个额外的问题-在这个设置中,你有什么提高编译效率的技巧?
发布于 2009-03-18 10:30:55
我建议使用distcc。
发布于 2009-03-18 10:28:27
根据项目源代码的大小,可以在编译之前将所有文件本地复制到生成计算机。如果编译器必须在需要时通过网络拉取所有文件,这将引入一些开销,因为网络访问比磁盘访问慢得多。
如果您编写了一个脚本或使用了一个只将修改过的文件复制到构建机器上的工具,那么开销将会显著降低。在这种情况下,构建机器基本上会保留源文件的本地镜像,每次编译时,它都会更新任何修改过的文件,然后进行编译。显然,如果你有很多用户和/或大型项目文件,那么你就会遇到存储/空间问题。
发布于 2009-03-18 10:29:03
由于以下原因,总是会产生开销:
最后一个对你来说是最重要的,因为网络访问比磁盘访问慢得多。预缓存(首先在本地获取所有文件,然后开始编译)可能会对此有所帮助。已经开始的构建将不会受到新的并发用户的阻碍。
https://stackoverflow.com/questions/657688
复制相似问题