小细节大问题——程序的效率 - winnie的专栏 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/05/01 20:22:20
小细节大问题——程序的效率 收藏
能写出稳定高效的程序一直是程序员所追求的,今天就和大家一起探讨一下关于C++程序优化的几点    由于C/C++语言的复杂性,致使C++编译器隐藏了层层幔布,我们不经意的一条语句都可能是编译器幕后几经周折的结果,在要求程序高效运行的环境下,每一条语句都会让我们慎之又慎,而程序优化又是个十分广泛的话题,包括程序架构设计的优化,语言本身的优化,编程技巧和策略等等,如此大的范围非我能力所及,这里谈的优化就是在实际开发中遇到的问题。    一.  举手之劳的小差别    既然说优化就一定要仔细,不放过任何微小的细节,先看个小例子    1.  int a, i = 5;         a = i>>1;  (1)         i = 5;         a = i/2;     (2)    语句(1)和语句(2)都是将i的数值除2取整,但实现方式却存在较大的差别。    (1)  a = i>>1  相当于           sar        eax, 1      //算术右移一位    (2)  a = i/2     相当于           cdq                       //将EDX所有值设置为EAX高位的值           sub       eax, edx           sar        eax, 1    可以看到语句(2)完成同样功能却比语句(1)多出两条指令。需要注意的是,当被除数i是正数时,两者数值相同,因两种写法均向上取整,当i为负数时却不一样,因为语句(2)向上取整,即 i=-5时,语句(2) a=-2而语句(1) a=-3。    正所谓勿以善小而不为,勿以恶小而为之啊,优化是大局观,但也别忽视小问题。    二.  猜猜哪一个更快    写法(1)    int a[] = {1, 2, 100, 256};    for(int i=0; i本文来自CSDN博客,转载请标明出处:file:///C:/Documents%20and%20Settings/Administrator/桌面/网文/小细节大问题——程序的效率%20-%20winnie的专栏%20-%20CSDN博客.mht