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

更新:从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只要有地址,我们就能把这件衬衫寄到!

GoCenter t恤的挑战