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

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

