高级编程语言提供的函数、条件语句和循环这样的抽象编程构造极大地提高了编程效率。然而,这也潜在地使性能显著下降成为了用高级编程语言写程序的一大劣势。在理想条件下,在不以性能为妥协的情况下,你应该写出易读并且易维护的代码。因此,编译器尝试自动优化代码以提高其性能,当今的编译器都深谙其道。编译器可以转化循环、条件语句和递归函数、消除整块代码和利用目标指令集的优势让代码变得高效而简洁。所以对程序员来说,写出可读性高的代码要比因为手工优化而使代码变得神秘且难以维护更加可贵。事实上,手工优化的代码反而可能会让编译器难以进行额外和更加有效的优化。
比起手工优化代码,你更应该考虑关于设计的各个方面,比如使用更快的算法,引入线程级并行机制和利用框架特性(比如move构造函数)。
这篇文章是关于visualc++编译器优化的。为了便于应用,我将会讨论编译器采取的最重要的优化技巧和决策。我的目的不是告诉你如何手工优化代码,而是向你展示为什么你可以信赖编译器来优化你写出的代码。这篇文件绝不是对visualc++编译器优化工作的全面考察。但是将会给你展示那些你真正想要了解的优化工作和怎样与你的编译器沟通来应用它们。
有一些重要的优化是超出所有现有编译器能力的——比如,用高效的算法代替低效的,或者改变数据结构的排列以优化其在内存中的布局。但是这些优化话题超出了本文的范围。
定义编译器优化
优化工作涉及到的一个方面,是把一行代码转化成同等效果的另一行代码,在这个过程中提升它的一项或多项性能。最重要的两项性能(指标)是代码的执行速度和长度。其他一些特性包括代码执行开销,代码编译所需时间,如果代码需要通过即时编译机制(just-in-time(jit))进行编译,那么jit所需的编译时间也是指标之一。
编译器经常会依据它们所使用的技术优化代码。虽然并不完美,但是比起花时间手工苦苦推敲一个程序,利用编译器提供的特有功能和让编译器来优化代码要高效得多。
这里有4种方法让你的编译器更加高效地优化代码:
1.书写可读、高效的代码。不要把visualc++面向对象的特性当作性能的敌人。最新版本的c++可以让这些开销保持到最低甚至消除这些开销。
2.使用编译器声明。例如让编译器使用比默认情况更快的函数调用约定。
3.使用编译器内置函数(白殿疯早期症状图片白癫风最有效治疗偏方
转载请注明地址:http://www.yujinxiangqiangzhi.com/rjlc/rjlc/9955.html