在这个对回答和Java之间的性能差异进行了高度投票的问题中,我了解到JIT编译器有时能够更好地进行优化,因为它可以确定机器的确切细节(处理器、缓存大小等):
通常,C#和Java可以一样快或更快,因为JIT编译器--在第一次执行时编译您的IL的编译器--可以进行优化,而C++编译的程序不能这样做,因为它可以查询机器。它可以确定机器是英特尔或AMD;奔腾4,核心独奏,或核心二重奏;或是否支持SSE4等。 C++程序必须事先编译,通常采用混合优化,以便在所有机器上运行良好,但没有对单个配置(即处理器、指令集、其他硬件)进行优化。
问:有没有办法让编译器专门为我的当前机器进行优化?有能够做到这一点的编译器吗?
发布于 2017-04-11 13:26:50
对于GCC来说,你可以使用旗子-march=native。请注意,生成的代码可能不会在其他CPU上运行,因为
GCC使用这个名称来确定在生成程序集代码时可以发出什么样的指令。
这样就可以生成特定于CPU的程序集。
如果您希望您的代码在其他CPU类型上运行,但为了在CPU上获得更好的性能而对其进行优化,则应该使用-mtune=native。
指定要调优性能的处理器的名称。代码将被调优,就像目标处理器属于此选项中指定的类型一样,但仍然使用与-mcpu=选项指定的目标处理器兼容的指令。
https://stackoverflow.com/questions/43347139
复制相似问题