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

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

