基准化Xcode构建

最近,我开始使用相当大的iOS / Swift代码库,该库需要几分钟才能从一个干净的文件夹完成完整的构建。 由于我手头上有多个macOS工作站,因此我自然地好奇如何将它们与我最常见的用例(开发Swift iOS应用程序)进行比较。 有没有能让我在整整一整整的时间内少拿一杯咖啡的时间?

代码库

我用于这些测试的代码库具有以下配置文件:

Swift文件: 223

Objective-C文件: 6

故事板: 35

Xcode版本: 8.3.2

安排:一个主要目标,有两个嵌入式项目。

测试方法

我使用的方法非常简单,围绕Xcode开发的计算机“实际使用”进行设计:

  1. 清理项目,手动删除整个DerivedData文件夹。
  2. 关闭电脑
  3. 重新开启电脑
  4. 打开项目
  5. 选择“通用ios设备”目标OS,然后构建项目(措施1)
  6. 清理项目,关闭Xcode,手动删除DerivedData(再次)
  7. 启动Xcode,再次构建项目(测量2)

我计划进行两次试验,以记录构建当前不在磁盘缓存中的项目的经验,然后 macOS有机会将文件保留在磁盘缓存中之后再次构建它。 如下数字所示,这对两台基于SSD的计算机几乎没有影响,但对于具有Fusion磁盘的iMac却产生了巨大影响

对于所有试验,我确保计算机都使用交流电源,没有其他应用程序在运行-实际上,自启动每台计算机以来,除了运行XCode计时测试之外,我什么都没做。

我使用以下所述的三台不同的计算机进行了测试。

2015 15英寸(Retina)MacBook Pro Core i7

测试对象1是2015年的MacBook Pro,配备Core i7 CPU,SSD和16GB RAM。 这是许多认真的开发人员都会选择的非常标准的“开发人员工作站”。 实际上,我的测试确实支持这可能是开发人员(三个测试对象中)在功能和便携性之间的最佳平衡。

2015 27英寸(5K)iMac Core i5

测试对象2是2015年的iMac,配备Core i5 CPU,Spinning Fusion驱动器和32GB RAM。 这是我的“每日驱动程序”开发工作站。 虽然对于开发人员来说,带有旋转磁盘的Core i5机器听起来似乎不是自然选择,但以下数字表明, 在这种使用情况下 ,这实际上是三者中性能最高的机器。 当然,虽然它具有最多的RAM,最大的屏幕和最多的存储空间,但可移植性为零。 权衡…

2016 13英寸MacBook Pro(无触摸条)Core i7

我将此机器作为“旅行笔记本电脑”购买。 我喜欢它的可移植性,对于我来说,作为短时间的移动开发工作站,它已经足够了。 特别适合在飞机上使用和进行演示。 但是,我想知道2核i7是否对Xcode版本与“日常驱动程序” iMac中的4核i5或15英寸MBP中的4核i7有什么区别。确实确实如此。

结果

这是使用每台机器使用相同的代码集和相同的构建过程的系统配置,配置成本和构建时间的摘要。

注意:第四行是我没有测试的计算机,因为我没有。 我将其包括在内,因为如果要以我目前的iMac + 13“ MacBook配对进行交易,那是我需要购买的系统。我可以将基本型号升级到1TB的存储空间。

注意:这些价格是为此设备支付的价格(或者,对于我不拥有的2015 15英寸设备,其价格为该日期苹果公司的新价格)。

我的观察

  • 凭直觉,我本来以为Core i7的2015 MBP会以Core i5击败2015 iMac,但i5 iMac是最快的。 仅相差12秒,但仍可以以更低的成本获得更好的性能。
  • 我并不一定希望Fusion特色的iMac旋转磁盘能够赶上SSD机器(在有机会缓存​​项目之后),但是确实如此。 在用Xcode进行重复编译的用例中,与便宜得多的Fusion驱动器相比,基于SSD的iMac没有带来任何好处。
  • 不幸的是,只能订购带有2核的13“MBP。4核iMac和4核15” MBP都超过了2核13“ MacBook Pro。
  • 性能的最大决定因素似乎是构建过程可以使用多少个CPU内核区域。
  • i5 / i7架构似乎没有什么不同-至少对于此用例而言。

下次我会买什么?

由于我主要在办公室工作,并且偶尔出差旅行,因此iMac plus较低端的MacBook仍然适合我。 5K iMac(2,499美元)加上基本的13英寸MBP(1,699美元),比中档2016年15英寸MBP(3,199美元) 加上 5K UltraFine显示屏(1,299美元)要便宜。 您的行驶里程可能会有所不同,但就我的目的而言,iMac的速度最轻便,最教练级别的友善旅行机是两全其美的。 再加上我的生活每天都需要一台能正常工作的计算机,因此备份我的主计算机可以让我省心。