Tag: vtune

在使用intel编译器的Windows和Linux之间的性能差异:看看程序集

我正在Windows和Linux(x86-64)上运行一个程序。 它使用相同的编译器(Intel Parallel Studio XE 2017)进行编译,其版本相同,Windows版本比Linux版本快3倍。 罪魁祸首是对std :: erf的调用,在英特尔math库中解决了这两种情况(默认情况下,它在Windows上静态链接,在Linux上静态链接,但在Linux上使用dynamic链接可提供相同的性能)。 这是一个简单的程序来重现问题。 #include <cmath> #include <cstdio> int main() { int n = 100000000; float sum = 1.0f; for (int k = 0; k < n; k++) { sum += std::erf(sum); } std::printf("%7.2f\n", sum); } 当我使用vTune来分析这个程序时,我发现程序集在Windows和Linux版本之间有点不同。 这是Windows上的呼叫站点(循环) Block 3: "vmovaps xmm0, xmm6" call 0x1400023e0 <erff> Block 4: inc […]