根据大多数基准的说法,英特尔的透明Linux比其他发行版要快得多,这主要归功于GCC的一个名为功能多版本化的特性。现在,他们使用的方法是编译代码,分析哪个函数包含向量化循环,然后用FMV属性修补代码,然后再编译它。
GCC自动做这件事的可行性有多大?例如,通过传递-mmultiarch=sandybridge,skylake (或类似的-m选项列出CPU扩展,如AVX和AVX2)。
现在,我对两种使用场景感兴趣:
发布于 2020-11-30 21:36:05
不,但没关系。实际上,非常的小代码实际上将从中受益;在很大程度上,通过在全球范围内这样做,您将只是(无需特别努力将页面中的匹配版本排序在一起)使您的系统由于代码大小的大幅度增加而受到更大的内存限制和速度限制。大多数实际负载甚至都不是CPU绑定的;它们是syscall--开销绑定、GPU绑定、IO绑定,等等。而许多绑定CPU的现代负载并不运行预编译代码,而是JIT的代码(即在浏览器中运行的所有东西,无论是真正的浏览器,还是每个电子应用程序中过时的、未修改的Chrome分叉)。
https://stackoverflow.com/questions/48882796
复制相似问题