构建时间很重要——速度就是一切

更新:自2021年5月1日起,GoCenter中央存储库已被淘汰,所有功能已弃用。有关中心日落的更多信息,请阅读弃用博客文章
在GoCenter第一次发布后,JFrog的团队说它是快得到去模块从那时起,它就变成了“旧的方式”获得模块。说实话,当他们这么说的时候,我并不相信他们。遵循“眼见为实”的古老谚语,我开始测试速度,看看这些说法是否准确。
博士TL;:事实证明这个团队是对的!GoCenter不仅节省时间,还节省CPU周期。随着项目越来越大,依赖树也越来越大,节省的成本也会增加。你不必相信我的话,看看“现在轮到你了!”的部分,以查看我的测试脚本,并在两分钟内开始测试!
为了测试,我在两个不同的网络上测试了两个项目。工程团队只有在所有测试完成后才知道我的测试,以避免他们篡改我的数据。我选了一个个人项目我最喜欢的静态网站生成器,雨果.GoCenter团队对所使用的项目或模块和版本没有影响力。这两个地点是为了确保JFrog办公室的测试不会对GoCenter造成不公平的偏袒。
测试
构建一个Go项目通常由两部分组成。首先,下载依赖项,然后构建可执行文件。由于所有测试都在同一台机器上完成,结果只关注第一部分,即下载依赖项。为了使测试尽可能公平和不间断,我写了一个小脚本,在运行之前删除所有模块。”去”。无论是使用GitHub还是GoCenter,这些命令都要运行十次,并将结果记录在一个文件中。
这些数字
可以找到完整的测试列表和结果在这里.为了便于比较结果,下面的表格标记了每个项目的最快和最慢运行之间的差异。
我个人项目使用JFrog网络的对比表
| 在用户模式下花费的CPU秒数(越少越好) | 在内核模式下花费的CPU秒数(越少越好) | CPU百分比(越少越好) | 总运行时间(以秒为单位)(越少越好) | |
|---|---|---|---|---|
| 比较最慢的运行 | GoCenter减少了17.79倍的CPU秒数 | GoCenter减少了7.03倍的CPU秒数 | GoCenter的CPU利用率是前者的6.12倍 | 使用GoCenter要快2.14倍 |
| 比较最快的跑步速度 | GoCenter减少了9.37倍的CPU秒数 | GoCenter减少了5.64倍的CPU秒数 | GoCenter减少了2.64倍的CPU使用 | 使用GoCenter要快2.94倍 |
比较表,我的个人项目使用我的家庭网络
| 在用户模式下花费的CPU秒数(越少越好) | 在内核模式下花费的CPU秒数(越少越好) | CPU百分比(越少越好) | 总运行时间(以秒为单位)(越少越好) | |
|---|---|---|---|---|
| 比较最慢的运行 | GoCenter减少了6.79倍的CPU秒数 | GoCenter减少3.31倍的CPU秒数 | GoCenter的CPU消耗少了2.21倍 | 使用GoCenter要快2.38倍 |
| 比较最快的跑步速度 | GoCenter减少了5.73倍的CPU秒数 | GoCenter减少了3.49倍的CPU秒数 | GoCenter的CPU消耗少了1.07倍 | 使用GoCenter要快4.45倍 |
查看总运行时间,也就是机器获取模块并将其放入正确位置所花费的时间,使用GoCenter比从GitHub获取模块要快得多。
我接受这是一个只有6个直接使用模块和12个间接使用模块的个人项目。在一个更大的项目中使用GoCenter会有什么影响,比如有43个直接使用模块和11个间接使用模块的Hugo ?
Hugo使用JFrog网络的对比表
| 在用户模式下花费的CPU秒数(越少越好) | 在内核模式下花费的CPU秒数(越少越好) | CPU百分比(越少越好) | 总运行时间(以秒为单位)(越少越好) | |
|---|---|---|---|---|
| 比较最慢的运行 | GoCenter减少了7.76倍的CPU秒数 | GoCenter减少了5.17倍的CPU秒数 | GoCenter的CPU消耗少了0.79倍 | 使用GoCenter要快8.34倍 |
| 比较最快的跑步速度 | GoCenter减少了7.51倍的CPU秒数 | GoCenter减少了4.97倍的CPU秒数 | GoCenter的CPU消耗少了0.66倍 | 使用GoCenter要快9.77倍 |
对比表Hugo使用我的家庭网络
| 在用户模式下花费的CPU秒数(越少越好) | 在内核模式下花费的CPU秒数(越少越好) | CPU百分比(越少越好) | 总运行时间(以秒为单位)(越少越好) | |
|---|---|---|---|---|
| 比较最慢的运行 | GoCenter减少了6.71倍的CPU秒数 | GoCenter减少了4.65倍的CPU秒数 | GoCenter的CPU消耗是它的0.75倍 | 使用GoCenter要快7.83倍 |
| 比较最快的跑步速度 | GoCenter减少了7.64倍的CPU秒数 | GoCenter减少了5.61倍的CPU秒数 | GoCenter的CPU消耗少了0.67倍 | 使用GoCenter要快10.10倍 |
即使对于较大的项目,使用GoCenter获取Go模块也是有意义的。
结果
事实证明,这个团队是对的!GoCenter不只是用于消除供应商并使您的构建可重复使用不可改变的模块.使用GoCenter获取Go模块也比从版本控制系统获取它们更快。从上述数字可以得出两个有趣的结果。首先,在较慢的网络上,由于下载模块所占用的带宽比下载源代码要少得多,因此您将看到更大的性能提升。其次,随着项目复杂性的增加(依赖关系树更大),您还将看到性能的大幅提升。
现在轮到你了!
你不必相信我的话,事实上,我挑战你自己试试!这是我用来测试项目的脚本:
我挑战你在你的项目中尝试它,并使用标签将结果发推给我们# golang而且# GoCenter.完成后,给我们发邮件gocenter@www.si-fil.com还有一个地址,我们可以把这件超赞的衬衫寄到!

