本文总结都是个人看法,有待讨论,希望大家多多讨论,嘿嘿。
1、a++和++a
尽量使用++a,因为一般的话,++a要比a++快。
这是为什么呢?因为++a的实现是先把a加1(inc指令),然后把a的地址传送下去;而a++的实现,也是先把a复制一份到内存单元b内,然后把a+1(inc指令),之后把b的地址传送下去。所以a++比++a多了一份复制,会降低速度。
2、const修饰比非const快。
这个很显然,在编译器做优化的时候,const对象不修改,可以外提和重用,所以优化率显然比非const的高,速度也会相应的提升。
3、尽可能使用switch,因为switch并不是简单的if-else,我做过实验switch的速度接近goto!
因为,switch是将其内的所有代码都生产在同一块区域内,之后,根据不同的case哈希到某个程序运行位置,所以和if-else那种不断地对比,速度显然大大的提升。这也说明了为什么switch只能用int类型,因为其他类型散列不是很显然,这同时也是break的原因,因为没有break的话,代码会在switch生产的程序段内不断地执行,只要遇到break,才会跳出来。
以上均为我自己实现编译器或者看一些编译书发现的,有待讨论,但基本上我都做过实验,应该都很符合