在我的公司中,我们正在为不同版本的 Debian 构建程序。我们在 ESXI 上使用带有虚拟机的 Jenkins 构建链。
这些程序使用 GCC 编译。根据一些测试,我们发现 Stretch/Buster 的编译时间比 Wheezy/Jessie 慢 50%。
例如,一个简单的 Hello World 程序:
jessie
------
real 0m0.099s
user 0m0.076s
sys 0m0.012s
buster
------
real 0m0,201s
user 0m0,168s
sys 0m0,032s
对于小程序,这并不重要,但对于较大的项目,时间差异确实可见(即使使用 -O3 标志):
jessie
------
real 0m29.996s
user 0m26.636s
sys 0m1.688s
buster
------
real 0m59,051s
user 0m53,226s
sys 0m5,164s
我们最大的项目在 Jessie 上编译需要 25 分钟,而在 Stretch 上编译需要 45 分钟。
请注意,这是在两个不同的虚拟机上但在同一物理机上完成的。CPU 型号为:Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz。
我认为其中一个原因可能是应用于内核的崩溃和幽灵补丁。但我不知道这个补丁是否在拉伸时启用。
您对这种性能差异的可能原因有任何想法吗?我怎样才能检查它?以及如果可能的话如何解决它。
问候。