我们目前正在评估我们下一代公司范围内的开发人员的PC配置,并且发现了一些非常奇怪的东西。
我们相当大的整体-在我们当前的配置下,构建时间约为 4.5分钟(无需测试,只需编译)。
对于我们的下一代配置,我们升级了几个组件。处理器的频率和IPC适度增加,CPU内核数量增加一倍,并且从小型SATA SSD切换到额定速度> 3GBps的NVMe SSD。此外,下一代配置将从Windows 7切换到Windows 10。
在执行第一个测试时,我们注意到构建时间几乎相同(4.3分钟),这比我们预期的要少得多。
在我们的实验过程中,我们曾尝试从Windows主机上运行的虚拟Linux机器中运行构建过程。在旧配置(Windows7)上,我们将构建时间从4.5分钟减少到了〜3.7分钟,在Windows 10主机上,我们将构建时间从4.3分钟减少到了2.3分钟。我们已经排除了病毒扫描之类的东西。
我们对这些结果感到非常惊讶,并试图找到另一种解释,而不是一些关于不同操作系统的几乎是宗教和侮辱性的陈述。
所以问题是:在配置Windows机器以使速度几乎是在同一Windows主机上虚拟化运行的Linux速度的一半时,我们可能会做错什么?尤其是所有硬件的进步似乎都被从Windows 7切换到10所吞噬。
另一个问题是:我们如何让javac进程占用更多的内核,因为现在,使用Hotspot JDK 8,我们最多可以看到构建真正使用的两个内核。我已经读过有关sjavac的文章,但这似乎只是一个实验性功能,仅适用于OpenJDK9以后,对吧?
经过将近一年的试验,我们得出结论,确实是NTFS是行凶的。如果您有一个带有Linux主机的ntfs用户分区,则与all-windows-setup相比,您会得到一些相似的结果。
我们进行了gradle构建,eclipse内部构建,启动wildfly以及在多个设备上运行以数据库为中心的测试的基准测试。从Windows切换到Linux时,我们所有的基准测试始终显示出至少100%的速度提升(有时,Windows在现实世界基准测试中所花费的时间是Linux的3倍,某些人为基准测试所带来的速度提高了60%!)。尤其是在笔记本电脑上,我们遇到的噪音要少得多,因为完整版本的处理器总负荷要比Windows少得多。
我们的结论是,在过去的一年中从Windows切换到Linux。
关于并行化,我们意识到,这是某种形式的代码纠缠。解决这个问题有助于gradle和javac大量并行化构建(也可以查看gradle-composite-builds)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句