handleMsg1, handleMsg2, handleMsg3 /用下面这行更有效的代码来替换 switch 语句/ statusMsgFunctionReceiveMessage(9)、循环转置 有些机器对 JNZ为 0 转移有特别的指令处理,速度非常快,如果你的循环对方向不敏感,可以由大向小循环。
旧代码: for i 1 i lt MAX i 。
。
。
新代码: i MAX1 while --i 。
。
。
不过千万注意,如果指针操作使用了 i 值,这种方法可能引起指针越界的严重错误i MAX1。
当然你可以通过对 i 做加减运算来纠正,但是这样就起不到加速的作用,除非类似于以下情况:旧代码: char aMAX5 for i 1 i lt MAX i ai40 新代码: i MAX1 while --i ai40 (10)、公用代码块 一些公用处理模块,为了满足各种不同的调用需要,往往在内部采用了大量的if-then-else 结构,这样很不好,判断语句如果太复杂,会消耗大量的时间的,应该尽量减少公用代码块的使用。
任何情况下,空间优化和时间优化都是对立的--东楼。
当然,如果仅仅是一个3x之类的简单判断,适当使用一下,也还是允许的。
记住,优化永远是追求一种平衡,而不是走极端。
(11)提升循环的性能 要提升循环的性能,减少多余的常量计算非常有用(比如,不随循环变化的计算)。
不好的代码在 for中包含不变的 if:for i 。
。
。
if CONSTANT0 DoWork0 i ; // 假设这里不改变 CONSTANT0 的值 else DoWork1 i ; // 假设这里不改变 CONSTANT0 的值 推荐的代码:if CONSTANT0 for i 。
。
。
DoWork0 i ; else for i 。
。
。
DoWork1 i ; 如果已经知道 if的值,这样可以避免重复计算。
虽然不好的代码中的分支可以简单地预测,但是由于推荐的代码在进入循环前分支已经确定,就.
上一篇:
暑假实习MFC实现迷宫自寻路径
下一篇:
改变自己从改变思想开始