C 语言程序运行速度优化方法谈 1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。 在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。 数组索引 指针运算 For(;;){ p=array A=array[t++]; for(;;){ a=*(p++); 。。。。。。。。。 。。。。。。 } } 指针方法的优点是,array 的地址每次装入地址p 后,在每次循环中只需对 p 增量操作。在数组索引方法中,每次循环中都必须根据 t 值求数组下标的复杂运算。 2、使用尽量小的数据类 型 能够 使用字 符 型 (char)定 义 的变 量,就 不要使用整 型 (int)变 量来定 义 ; 能够 使用整 型 变量定 义 的变 量就 不要用长 整 型 (long int),能不使用浮 点型 (float)变 量就 不要使用浮 点型 变 量。当 然 ,在定 义 变 量后不要超 过 变 量的作用范 围 ,如果超 过 变 量的范 围 赋 值,C 编译器并 不报错 ,但程序运行结果却 错 了,而且 这样的错 误 很难 发 现 。 在 ICCAVR 中,可以在 Options 中设 定 使用 printf 参 数,尽量使用基 本 型 参 数(%c、%d、%x、%X、%u 和%s 格 式 说明符 ),少用长 整 型 参 数(%ld、%lu、%lx 和%lX 格 式说明符 ),至 于浮 点型 的参 数(%f)则尽量不要使用,其 它 C 编译器也 一样。在其 它 条 件 不变的情况下,使用%f 参 数,会 使生成的代码的数量增加 很多,执行速度降 低 。 3、减少运算的强度 ( 1) 、查 表(游 戏 程序员 必修 课 ) 一个 聪 明的游 戏 大虾 ,基 本 上 不会 在自 己 的主 循环里 搞 什 么 运算工 作,绝 对是先 计 算好 了,再 到 循环里 查 表。看 下面的例 子 : 旧 代码: long factorial(int i) { if (i == 0) return 1; else return i * factorial(i - 1); } 新代码: static long factorial_table[] = {1, 1...