Optimization 优化、编译器及其效果
(i) 如果一个程序针对一个CPU类(例如多核i7)进行了优化 通过编译同一平台上的代码,将提高其性能 在老一代的其他CPU上处于次优级别(例如奔腾4) ... 优化可能会对其他CPU上的性能有害 (ii)为了优化,编译器可以使用x86扩展(如SSE 4),这些扩展是 在旧的CPU中不可用。。。。那么,有没有退回到一些非扩展 基于旧CPU的例程Optimization 优化、编译器及其效果,optimization,multicore,intel,Optimization,Multicore,Intel,(i) 如果一个程序针对一个CPU类(例如多核i7)进行了优化 通过编译同一平台上的代码,将提高其性能 在老一代的其他CPU上处于次优级别(例如奔腾4) ... 优化可能会对其他CPU上的性能有害 (ii)为了优化,编译器可以使用x86扩展(如SSE 4),这些扩展是 在旧的CPU中不可用。。。。那么,有没有退回到一些非扩展 基于旧CPU的例程 (iii)英特尔C++编译器比Visual C++编译器或GCC… (iv)一个真正的多核线程应用程序能否在 较旧的CPU(如奔腾III或4) 优化CP
(iii)英特尔C++编译器比Visual C++编译器或GCC… (iv)一个真正的多核线程应用程序能否在 较旧的CPU(如奔腾III或4)
对于在某些条件下(选择编译器、选择CPU、选择编译的优化标志)为什么X应该比Y快的每个论点,一些聪明的SOer会找到一个反论点,对于每个例子,都是一个反例。当橡胶遇到路面时,你唯一的办法就是测试和测量。如果您想知道编译器X是否比编译器Y“更好”,请首先定义更好的含义,然后运行大量实验,然后分析结果。在平台上编译并不意味着优化该平台。(可能只是你问题中的措辞不好。) 在我使用过的所有编译器中,针对平台X的优化不会影响指令集,只会影响指令集的使用方式,例如,针对i7的优化不会启用SSE2指令 此外,在大多数情况下,优化器避免“悲观”未优化的平台,例如,在为i7进行优化时,通常不会选择i7上的一个小改进,如果这意味着对另一个常见平台的重大影响 这还取决于指令集的性能差异——我的印象是,在过去十年中,指令集的性能已经大大降低了(但我最近没有深入研究——对于最近几代人来说可能是错误的)。还认为优化只在少数地方有显著差异。
为说明优化器的可能选项,请考虑下列实现转换语句的方法:
- 序列
if(x==c)转到标签
- 范围检查和跳转表
- 二进制搜索
- 综合上述因素